C# 如何使用log4net创建log.txt?
我可以创建日志,但无法向其中写入异常字符串…logs.txt仍然为空 这是捕捉块:C# 如何使用log4net创建log.txt?,c#,asp.net-mvc,logging,log4net,C#,Asp.net Mvc,Logging,Log4net,我可以创建日志,但无法向其中写入异常字符串…logs.txt仍然为空 这是捕捉块: catch (Exception ex) { Logging.LogError(ex.ToString()); return new DataTable(); } Logging.cs: public class Logging { public readonly ILog log = Lo
catch (Exception ex)
{
Logging.LogError(ex.ToString());
return new DataTable();
}
Logging.cs:
public class Logging
{
public readonly ILog log = LogManager.GetLogger(typeof(Logging));
public static void LogError(string exception)
{
log4net.Config.XmlConfigurator.Configure();
}
}
web配置:
<log4net>
<appender name="file" type="log4net.Appender.RollingFileAppender">
<file type="log4net.Util.PatternString" value="Logs\Log_%date{dd-MM-yyyy_HH-mm-ss}.txt"/>
<appendToFile value="true"/>
<maxSizeRollBackups value="-1"/>
<!--infinite-->
<staticLogFileName value="true"/>
<rollingStyle value="Once"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %-5level %message%newline"/>
</layout>
</appender>
<root>
<level value="ALL"/>
<appender-ref ref="file"/>
</root>
</log4net>
将您的课程更改为
public class Logging
{
public static readonly ILog log = LogManager.GetLogger(typeof(Logging));
public static Logging()
{
log4net.Config.XmlConfigurator.Configure();
}
public static void LogError(string exception)
{
log.Error(exception);
}
}
检查web服务器上的权限,并使用日志文件的完整路径。对log4net也使用debug=“true”。下面是log4net配置的示例,它根据文件大小滚动文件。你可以以后再换
<log4net debug="true">
<root>
<level value="ALL" />
<appender-ref ref="file" />
</root>
<appender name="file" type="log4net.Appender.RollingFileAppender, log4net">
<file value="wwwroot\logs\Log.txt" />
<appendToFile value="true" />
<rollingStyle value="Size" />
<maximumFileSize value="1MB" />
<maxSizeRollBackups value="5" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%-5level] (%thread) %logger - %message%newline" />
</layout>
</appender>
要使用log4net,您需要:
- configure log4net:查看上提供的示例,了解如何在配置文件中对其进行配置
- 初始化log4net:您需要在应用程序开始时进行初始化,例如使用
log4net.Config.XmlConfigurator.Configure()代码>
- 在要从中记录数据的类中实例化记录器:
private static readonly ILog log=LogManager.GetLogger(typeof(MyApp))代码>
- 使用日志记录器记录:
log.Info(“正在退出应用程序”)代码>
在您的示例中,您需要在catch块所在的类中声明记录器,在应用程序开始时初始化log4net,并使用实例记录异常您需要实际登录log4net,在哪里完成?(提示:无处),尝试log.Error(异常);如何登录log4net???帖子更新!错误1'Logging.Logging()':静态构造函数上不允许使用访问修饰符获取记录器后不应调用配置,建议在正在使用的类中直接使用记录器,以便从命名空间组织中获益。我知道在类中直接使用记录器的好处。这是TS代码:),调用配置有什么问题?
<log4net debug="true">
<root>
<level value="ALL" />
<appender-ref ref="file" />
</root>
<appender name="file" type="log4net.Appender.RollingFileAppender, log4net">
<file value="wwwroot\logs\Log.txt" />
<appendToFile value="true" />
<rollingStyle value="Size" />
<maximumFileSize value="1MB" />
<maxSizeRollBackups value="5" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%-5level] (%thread) %logger - %message%newline" />
</layout>
</appender>