【发布时间】:2016-05-09 22:55:59
【问题描述】:
我正在使用 C# .Net 编写一个网络表单电子邮件发送应用程序,我想在每次发送邮件时记录在日志中。
这是我的网络配置文件
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
<log4net>
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="TestLog.txt"/>
<appendToFile value="true"/>
<rollingStyle value="Composite"/>
<datePattern value="yyyyMMdd"/>
<maxSizeRollBackups value="10"/>
<maximumFileSize value="10MB"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="[%d{yyyy-MM-dd HH:mm:ss}] [%p] [%c:%L] - %m%n"/>
</layout>
</appender>
<root>
<level value="DEBUG"/>
<appender-ref ref="RollingLogFileAppender"/>
</root>
</log4net>
protected void Page_Load(object sender, EventArgs e)
{
log4net.Config.XmlConfigurator.Configure();
}
我的类定义下有这个属性
public partial class enviarMails : System.Web.UI.Page
{
private static readonly ILog logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
我有这种写日志的方法
public void escribirLog(String msj)
{
logger.Error(msj);
}
【问题讨论】:
-
我通过 NuGet 添加了 log4net 参考
-
运行您的应用程序池的用户很可能没有目标日志文件的写入权限。您显示的其他所有内容看起来都很好。
-
您在其下运行站点的用户是否对您的本地路径具有写入权限?尝试其他路径,例如 C:\temp\testlog.txt
-
这个? -
@alanrubinoff 是的。并且您只需要在应用启动时调用
XmlConfigurator.Configure(),而不是在每个页面加载时。