我一直都在使用log4net,但有一点我从未弄清楚的是如何判断内部发生了什么.例如,我的项目中有一个控制台appender和一个数据库appender.我对数据库和代码做了一些更改,现在数据库appender不再起作用了.我会弄清楚为什么最终,但如果我能看到log4net里面发生了什么,那将会有很大帮助.
log4net是否生成任何类型的输出,我可以查看以尝试确定问题的根源?
目前我的应用程序使用log4net来记录错误,web.config为此如下:
<log4net>
<appender name="FileAppender" type="log4net.Appender.RollingFileAppender">
<file type="log4net.Util.PatternString" value="../../logs/gateway_%date{yyyyMMdd}.log" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<datePattern value="yyyyMMdd" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] – %message%newline" />
</layout>
</appender>
<root>
<level value="DEBUG" />
<appender-ref ref="RollingLogFileAppenderOutput" />
</root>
</log4net>
Run Code Online (Sandbox Code Playgroud)
但是,客户端现在希望将每个错误通过电子邮件发送给他们.
最简单的方法是什么,你可以在web.config文件中做到吗?
当发生任何应用程序错误时,我正在使用log4net发送邮件.我已经配置了log4net但邮件没有被重新编写.以下是配置:
<appender name="SmtpAppender" type="log4net.Appender.SmtpAppender">
<to value="aagrawal@inco.com"/>
<from value="aagrawal@inco.com"/>
<subject value="ERROR | MRM Application"/>
<smtpHost value="relaymail.sapient.com"/>
<bufferSize value="512"/>
<lossy value="true"/>
<evaluator type="log4net.Core.LevelEvaluator">
<threshold value="ALL"/>
</evaluator>
<layout type="log4net.Layout.PatternLayout,log4net">
<conversionPattern value="%property{log4net:HostName} :: %level :: %message %newlineLogger: %logger%newlineThread: %thread%newlineDate: %date%newlineNDC: %property{NDC}%newline%newline"/>
</layout>
</appender>
Run Code Online (Sandbox Code Playgroud)
是否还需要进行其他更改?
我用smtpAppender(gmail)配置了log4net.奇怪的问题是,当我在IIS 7.5上部署应用程序时,smtpAppender无法正常工作.
我尝试使用telnet命令测试与gmail smtp的连接.所以我可以检查是否有任何阻止,但测试工作正常.
我的日志配置:
<log4net>
<appender name="RollingFile" type="log4net.Appender.RollingFileAppender">
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<file value="C:\logs\MyLog.log"/>
<appendToFile value="true"/>
<maximumFileSize value="500KB"/>
<maxSizeRollBackups value="2"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %level %logger - %message%newline"/>
</layout>
</appender>
<appender name="SmtpAppender" type="log4net.Appender.SmtpAppender,log4net">
<to value="test1@test.com" />
<from value="test2@test.com" />
<subject value="Error logging message" />
<smtpHost value="smtp.gmail.com" />
<port value="587"/>
<authentication value="Basic" />
<username value="test05@gmail.com"/>
<password value="password"/>
<EnableSsl value="true" />
<bufferSize value="1" />
<lossy value="true" />
<evaluator type="log4net.Core.LevelEvaluator,log4net">
<threshold value="ERROR" />
</evaluator>
<layout type="log4net.Layout.PatternLayout,log4net">
<conversionPattern value="%property{log4net:HostName} :: %level :: %message %newlineLogger: …Run Code Online (Sandbox Code Playgroud) 我正在尝试将日志消息发送到我的 gmail 帐户,但它一直无法正常工作。我试过更改端口和更改阈值,但它不起作用。当我尝试在文件中写入日志时一切正常,所以我认为问题出在 log4net.config 文件中。
我的 log4net 配置文件包含:
<log4net>
<appender name="SmtpAppender" type="log4net.Appender.SmtpAppender">
<to value="mymail@gmail.com" />
<from value="mysendermail@gmail.com" />
<subject value="Crash log" />
<smtpHost value="smtp.gmail.com" />
<authentication value="Basic" />
<port value="465" />
<username value="myusername" />
<password value="mypass" />
<bufferSize value="1" />
<EnableSsl value="true"/>
<lossy value="true" />
<evaluator type="log4net.Core.LevelEvaluator">
<threshold value="DEBUG"/>
</evaluator>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%-5p %d{hh:mm:ss} %message%newline" />
</layout>
</appender>
<root>
<level value="DEBUG"/>
<appender-ref ref="SmtpAppender"/>
</root>
</log4net>
Run Code Online (Sandbox Code Playgroud)
在我的 Startup.cs 文件中,我有:
var logRepository = LogManager.GetRepository(Assembly.GetEntryAssembly());
XmlConfigurator.Configure(logRepository, new FileInfo("log4net.config"));
Run Code Online (Sandbox Code Playgroud)
我的示例代码是:
public class HomeController …Run Code Online (Sandbox Code Playgroud)