2017-07-04 54 views
0

我想要将堆栈跟踪的日志函数调用写入日志文件。

我使用log4net的1.2.10.0和C#.NET 4.0(我不能更改其中的任何)

记录将使用称为

private static log4net.ILog log = log4net.LogManager.GetLogger(global::System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); 

log.Info("Show the stacktrace here"); 

的log4net.config文件看起来像这

<?xml version="1.0" encoding="utf-8" ?> 
<log4net debug="true"> 

    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"> 
    <file value="${ALLUSERSPROFILE}\Application1\Application1.log" /> 
    <appendToFile value="true" /> 
    <rollingStyle value="Date" /> 
    <datePattern value=" yyyy-MM-dd" /> 
    <maxSizeRollBackups value="10" /> 
    <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date{ISO8601}|[%thread]|%-5level|%message|%stacktrace{5}%newline" /> 
    </layout> 
    </appender> 

    <root> 
    <level value="INFO" /> 
    <appender-ref ref="RollingLogFileAppender" /> 
    </root> 
</log4net> 

日志文件看起来像这样

2017年7月4日11:18:12206 | [8] |信息 |这里显示的堆栈跟踪|堆栈跟踪{5}

因此,而不是显示实际堆栈跟踪我得到了这个词“堆栈跟踪{5 }'

我在做什么错?

回答

0

您需要将您的例外情况,如下面

catch(Exception ex) 
{ 
    // the form that takes two args has an exception as second, prints trace... 
    _log.Error("My custom message", ex); 
} 
+0

好吧,我测试了这一点,它仍然无法正常工作!只是得到文本堆栈跟踪... – Andis59

+0

你能让我知道你把这条线放在哪里吗? log.Info(“在这里显示堆栈跟踪”); – zzT

+0

在Winform程序的一个功能。我也有一个更大的程序,它使用多个程序集和类,并在varius方法中调用log.info。我从来没有得到任何stacktrace只是工作stacktrace – Andis59

相关问题