如何使用 log4net 创建 log.txt?
How to create log.txt using log4net?
我可以创建日志但无法向其中写入异常字符串...logs.txt 仍然为空...
这是捕获块:
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();
}
}
网络配置:
<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>
将您的 class 更改为
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);
}
}
public static class Logging
{
private static ILog _logger = null;
private static log4net.ILog Logger
{
get
{
if(_logger == null)
{
_logger = LogManager.GetLogger(typeof(Logging));
log4net.Config.XmlConfigurator.Configure();
}
return _logger;
}
}
// Better to use Exception object. This gives you more details
public static void LogError(string msg, Exception ex)
{
Logger.Error(msg, ex);
}
检查您的网络服务器的权限并使用日志文件的完整路径。还对 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,您需要:
- 配置 log4net:查看 site 上可用的示例,了解如何在配置文件中配置它
- 初始化 log4net:您需要在应用程序开始时执行此操作,例如使用
log4net.Config.XmlConfigurator.Configure();
- 在您想要记录数据的 class 中实例化一个记录器:
private static readonly ILog log = LogManager.GetLogger(typeof(MyApp));
- 使用记录器记录:
log.Info("Exiting application.");
在您的示例中,您需要在 catch 块所在的 class 中声明记录器,在应用程序启动时初始化 log4net,并使用该实例记录异常
我可以创建日志但无法向其中写入异常字符串...logs.txt 仍然为空...
这是捕获块:
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();
}
}
网络配置:
<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>
将您的 class 更改为
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);
}
}
public static class Logging
{
private static ILog _logger = null;
private static log4net.ILog Logger
{
get
{
if(_logger == null)
{
_logger = LogManager.GetLogger(typeof(Logging));
log4net.Config.XmlConfigurator.Configure();
}
return _logger;
}
}
// Better to use Exception object. This gives you more details
public static void LogError(string msg, Exception ex)
{
Logger.Error(msg, ex);
}
检查您的网络服务器的权限并使用日志文件的完整路径。还对 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,您需要:
- 配置 log4net:查看 site 上可用的示例,了解如何在配置文件中配置它
- 初始化 log4net:您需要在应用程序开始时执行此操作,例如使用
log4net.Config.XmlConfigurator.Configure();
- 在您想要记录数据的 class 中实例化一个记录器:
private static readonly ILog log = LogManager.GetLogger(typeof(MyApp));
- 使用记录器记录:
log.Info("Exiting application.");
在您的示例中,您需要在 catch 块所在的 class 中声明记录器,在应用程序启动时初始化 log4net,并使用该实例记录异常