我为log4net创建了ac#包装器。
它具有Debug()和Error()方法。
我想记录记录该记录的方法名称,但是如果我尝试使用%method转换模式,它只会打印Debug(包装方法名称)。
有没有办法打印完整的方法堆栈?
例如
而不是调试-> SomeLoggingActionInSomeClass.Debug?
包装器类代码:
public static class Logger
{
private static ILog _log;
static Logger()
{
log4net.Config.XmlConfigurator.Configure();
_log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
}
public static void Init()
{
}
public static void Debug(string message)
{
_log.Debug(message);
}
呼叫班级代码:
W6CustomizationLogger.Logger.Debug("Backup(): START");
报废那个包装纸。
组态
要初始化日志记录,您可以在启动项目中轻松地对其进行配置。
3添加以下内容:
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]
屏幕截图:
用法
现在在您的课程中只需添加:
public class YourClass
{
private ILog _logger = LogManager.GetLogger(typeof(YourClass));
// [....]
}
log4net.config
现在,您可以logger
在输出中使用该属性:
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %-7level %-40logger %message%newline" />
</layout>
它将在每个日志行上打印名称空间和类型名称(-7
并-40
填充名称,以便获得直列)。
另一个很棒的事情是,您还可以在名称空间上使用过滤器(使所有数据库类都记录到“ databases.log”等)。
<appender name="DatabaseAppender" type="log4net.Appender.RollingFileAppender">
<file value="C:\Logs\MyApp\Database.log" />
<rollingStyle value="Composite" />
<datePattern value=".yyyy-MM-dd'.log'" />
<appendToFile value="true" />
<maximumFileSize value="50MB" />
<maxSizeRollBackups value="5" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %level@%thread [%logger] %message%newline" />
</layout>
<!-- Namespace/Type filter -->
<filter type="log4net.Filter.LoggerMatchFilter">
<loggerToMatch value="CompanyName.DatabaseNamespace"/>
</filter>
<filter type="log4net.Filter.DenyAllFilter" />
</appender>
%type{1}
如果%logger
仅获取类名,则也可以使用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句