我想在.Net中使用.Net作为单例服务。目前的文档还没有涵盖这一点。
这是我在努力理解如何实现我的目标时做的一些代码.
我将ILogzioService作为一个依赖项添加到我的REST端点中,并试图推送一些数据,但是我在Kibana看不到任何日志,也没有任何错误.
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
}
}发布于 2022-06-21 15:03:25
我查看了您的代码并设法使其正常工作。基本上,我添加了logzioAppender.ActiveOptions();并将https://添加到logzioAppender.AddListenerUrl中。我强烈建议您设置logzioAppender.AddDebug(true),它将显示Logz.io附录的所有调试日志。另外,将日志发送到Logz.io需要几秒钟时间。希望它对你有用:)
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);
}
}https://stackoverflow.com/questions/72636341
复制相似问题