我为log4net创建了ac #wrapper.
它有Debug()和Error()方法.
我想记录记录记录的方法名称,但是如果我尝试使用%方法转换模式,它只打印Debug,它是包装器方法名称.
有没有办法打印完整的方法堆栈?
例如
而不是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);
}
Run Code Online (Sandbox Code Playgroud)
调用类代码:
W6CustomizationLogger.Logger.Debug("Backup(): START");
Run Code Online (Sandbox Code Playgroud)
报废包装.
组态
要初始化日志记录,您可以在启动项目中轻松配置它.
3添加以下内容:
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]
截图:
用法
现在在您的课程中添加:
public class YourClass
{
private ILog _logger = LogManager.GetLogger(typeof(YourClass));
// [....]
}
Run Code Online (Sandbox Code Playgroud)
log4net.config现在,您可以logger在输出中使用该属性:
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %-7level %-40logger %message%newline" />
</layout>
Run Code Online (Sandbox Code Playgroud)
这将在每个日志行上打印命名空间和类型名称(-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>
Run Code Online (Sandbox Code Playgroud)
您也可以使用%type{1}if %logger来获取类名.
| 归档时间: |
|
| 查看次数: |
6046 次 |
| 最近记录: |