首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Logz.io .Net服务

Logz.io .Net服务
EN

Stack Overflow用户
提问于 2022-06-15 18:38:31
回答 1查看 88关注 0票数 0

我想在.Net中使用.Net作为单例服务。目前的文档还没有涵盖这一点。

这是我在努力理解如何实现我的目标时做的一些代码.

我将ILogzioService作为一个依赖项添加到我的REST端点中,并试图推送一些数据,但是我在Kibana看不到任何日志,也没有任何错误.

代码语言:javascript
复制
    public class LogzioService : ILogzioService
    {
        private readonly string APPNAME = "MyApp0";

        public ILogger logger;
        private ILoggerRepository loggerRepository;
        private Hierarchy hierarchy;
        //private LogzioAppender logzioAppender;

        public LogzioService(IConfiguration config)
        {
            hierarchy = (Hierarchy)LogManager.GetRepository();

            LogzioAppender logzioAppender = new LogzioAppender();
            logzioAppender.AddToken(config["logzio_key"]);
            logzioAppender.AddType("log4net");
            logzioAppender.AddListenerUrl("listener-nl.logz.io:8071"); // Azure - West Europe
            logzioAppender.AddBufferSize(100);
            logzioAppender.AddBufferTimeout(TimeSpan.FromSeconds(5));
            logzioAppender.AddRetriesMaxAttempts(3);
            logzioAppender.AddRetriesInterval(TimeSpan.FromSeconds(2));
            logzioAppender.AddDebug(false);
            logzioAppender.AddGzip(true);
            logzioAppender.JsonKeysCamelCase(false);
            // <-- Uncomment and edit this line to enable proxy routing: --> 
            // logzioAppender.AddProxyAddress("http://your.proxy.com:port");
            // <-- Uncomment this to prase messages as Json -->  
            logzioAppender.ParseJsonMessage(true);
            hierarchy.Root.AddAppender(logzioAppender);
            hierarchy.Configured = true;

            LogzioAppenderCustomField sourceField = new LogzioAppenderCustomField();
            sourceField.Key = "source";
            sourceField.Value = APPNAME;

            logzioAppender.AddCustomField(sourceField);

            logger = hierarchy.GetLogger(APPNAME);
        }

        public void LogCritical(string message, Exception ex)
        {
            LoggingEventData loggingEventData = new LoggingEventData();
            loggingEventData.Message = message;
            loggingEventData.Level = Level.Critical;
            loggingEventData.Domain = "Domain";
            loggingEventData.ThreadName = "ThreadName";
            loggingEventData.ExceptionString = ex.ToString() + "\r\n" + ex.StackTrace;
            loggingEventData.Identity = "Identity";
            loggingEventData.TimeStampUtc = DateTime.UtcNow;
            loggingEventData.LoggerName = "LoggerName";
            loggingEventData.UserName = "UserName";
            loggingEventData.LocationInfo = new LocationInfo(GetType()); // not sure how to use this
            //loggingEventData.Properties = new log4net.Util.PropertiesDictionary(); // not sure how to use this

            // method 1
            LoggingEvent loggingEvent = new LoggingEvent(GetType(), loggerRepository, loggingEventData);
            // method 2
            //LoggingEvent loggingEvent = new LoggingEvent(GetType(), loggerRepository, loggingEventData.LoggerName, loggingEventData.Level, loggingEventData.Message, ex);

            hierarchy.Log(loggingEvent); // not working
            logger.Log(loggingEvent); // not working
        }
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-21 15:03:25

我查看了您的代码并设法使其正常工作。基本上,我添加了logzioAppender.ActiveOptions();并将https://添加到logzioAppender.AddListenerUrl中。我强烈建议您设置logzioAppender.AddDebug(true),它将显示Logz.io附录的所有调试日志。另外,将日志发送到Logz.io需要几秒钟时间。希望它对你有用:)

代码语言:javascript
复制
    public class LogzioService : ILogzioService
    {
        private readonly string APPNAME = "MyApp0";

        public ILogger logger;
        private ILoggerRepository loggerRepository;
        private Hierarchy hierarchy;

        public LogzioService(IConfiguration config)
        {
            hierarchy = (Hierarchy)LogManager.GetRepository();

            LogzioAppender logzioAppender = new LogzioAppender();
            logzioAppender.AddToken(config["logzio_key"]);
            logzioAppender.AddType("log4net");
            logzioAppender.AddListenerUrl("https://listener-nl.logz.io:8071"); // Azure - West Europe
            logzioAppender.AddBufferSize(100);
            logzioAppender.AddBufferTimeout(TimeSpan.FromSeconds(5));
            logzioAppender.AddRetriesMaxAttempts(3);
            logzioAppender.AddRetriesInterval(TimeSpan.FromSeconds(2));
            logzioAppender.AddDebug(false);
            logzioAppender.AddGzip(true);
            logzioAppender.JsonKeysCamelCase(false);
            // <-- Uncomment and edit this line to enable proxy routing: --> 
            // logzioAppender.AddProxyAddress("http://your.proxy.com:port");
            // <-- Uncomment this to prase messages as Json -->  
            logzioAppender.ParseJsonMessage(true);

            LogzioAppenderCustomField sourceField = new LogzioAppenderCustomField();
            sourceField.Key = "source";
            sourceField.Value = APPNAME;
            logzioAppender.AddCustomField(sourceField);
            
            logzioAppender.ActiveOptions();

            hierarchy.Root.AddAppender(logzioAppender);
            hierarchy.Root.Level = Level.All;
            hierarchy.Configured = true;
            logger = hierarchy.GetLogger(APPNAME);
        }

        public void LogCritical(string message, Exception ex)
        {
            LoggingEventData loggingEventData = new LoggingEventData();
            loggingEventData.Message = message;
            loggingEventData.Level = Level.Critical;
            loggingEventData.Domain = "Domain";
            loggingEventData.ThreadName = "ThreadName";
            loggingEventData.ExceptionString = ex.ToString() + "\r\n" + ex.StackTrace;
            loggingEventData.Identity = "Identity";
            loggingEventData.TimeStampUtc = DateTime.UtcNow;
            loggingEventData.LoggerName = "LoggerName";
            loggingEventData.UserName = "UserName";
            loggingEventData.LocationInfo = new LocationInfo(GetType());


            LoggingEvent loggingEvent = new LoggingEvent(GetType(), loggerRepository, loggingEventData);

            hierarchy.Log(loggingEvent);
            logger.Log(loggingEvent);
        }
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72636341

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档