我最近将log4net包添加到我的web应用程序中。现在我有几个问题:
那是什么?我能把它移走吗?
日志文件如下所示:
72 DEBUG 2015-06-16 08:17:41,713 [10] [(null)] [InsertDate] - from source IP(192.168.1.1) This is a DEBUG level message. Typically your most VERBOSE level.%line添加到conversionPattern中,但它不起作用。每次从72开始。怎么解决这个问题呢?发布于 2015-06-16 04:32:20
首先,您需要理解使用了NuGet包管理器,使用NuGet包含可用的包是一种很好的做法,而不是手动的,因为它会自动将包放置在适当的位置,让您可以轻松地将该包添加到其他解决方案项目中,提供版本控制等等。例如,这里。
关于你的问题:
First:不,log4net包不仅包含log4net.dll文件。它也有log4net.xml文件。是的,您可以手动添加这两个文件,而无需使用NuGet包管理器。
第二个:它是项目中NuGet包的列表。只有在不使用NuGet的情况下才能删除它。然而,这不是一个好主意-让它在那里,它是一个单一的重量轻的XML-文件。
第三代:这是一个面向对象的问题。创建一个单例全局记录器,例如:
public static class LoggingFactory
{
private static ILog _logger;
private static ILog CreateLogger()
{
// Some log4net initialization
return LogManager.GetLogger("Logger");
}
public static ILog GetLogger()
{
return _logger ?? (_logger = CreateLogger());
}
}
public class AnyClassOfYourWholeSolution
{
LoggingFactory.GetLogger().DebugFormat("{0} {1}", a, b);
}第四:,这又是一个面向对象的问题。创建一个适配器并使用它:
public interface ILogger
{
void Debug(string ip, string message);
void Info(string ip, string message);
void Error(string ip, string message);
}
public class Log4NetLogger : ILogger
{
private ILog _logger;
public Log4NetLogger()
{
// Some log4net initialization
_logger = LogManager.GetLogger("Logger");
}
public void Debug(string ip, string message)
{
// ...
}
public void Info(string ip, string message)
{
// ...
}
public void Error(string ip, string message)
{
// ...
}
}
public static class LoggingFactory
{
private static ILogger _loggerAdapter;
private static Initialize(ILogger adapter)
{
_loggerAdapter = adapter;
}
public static GetLogger()
{
return _logger;
}
}
public class BeginningOfYourProject
{
// Main() or Global.asax or Program.cs etc.
LoggingFactory.Initialize(new Log4NetLogger());
}
public class AnyClassOfYourWholeProject
{
LoggingFactory.GetLogger().Debug(ip, message);
}也可以将ip提取到log4net的属性:
// During initialization
log4net.ThreadContext.Properties["ip"] = ip;
// log4net Config
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%n%-5p %d %t IP: %property{ip} %m" />
</layout>这都取决于你的幻想。
https://stackoverflow.com/questions/30858508
复制相似问题