无法使用log4net在不同的-2文件中写入日志 [英] Unable to write log using log4net in different-2 file
本文介绍了无法使用log4net在不同的-2文件中写入日志的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在使用log4net写日志,我正在写异常和信息的seprate文件。
但是当我写任何异常时它正在两个文件中写入。它应该只在Error文件中记录而不是在两个文件中
下面是我的配置文件:
< configSections >
< 部分 名称 = log4net type = log4net.Config.Log4NetConfigurationSectionHandler,log4net / >
< / configSections >
< log4net debug = true >
< appender name = RollingLogFileAppender 类型 = log4net.Appender.RollingFileAppender >
< file value = 。\ Log\ChatLog.log / >
< appendToFile < span class =code-attribute> value = true / >
< lockingModel type = log4net.Appender.FileAppender + MinimalLock / >
< rollingStyle value = 大小 / >
< maxSizeRollBackups value = 10 / >
< maximumFileSize 值 = 10MB / >
< staticLogFileName value = true / >
< layout type = log4net.Layout.PatternLayout >
< filter type = log4net.Filter.LevelRangeFilter >
< levelMin value = INFO / >
< levelMin value = DEBUG / >
< / filter >
< < span class =code-leadattribute> conversionPattern value = %level%username%message%newline / >
< / layout >
< / appender >
< appender name = RollingErrorLogFileAppender type = log4net.Appender.RollingFileAppender >
< file value = 。 \\\\\ [LogLog.log / >
< appendToFile value = true / >
< lockingModel type = log4net.Appender.FileAppender + MinimalLock / >
< rollingStyle value = 大小 / >
< maxSizeRollBackups value = 10 / >
< maximumFileSize value = 10MB / >
< staticLogFileName value = true / >
< 布局 type = log4net.Layout.PatternLayout < span class =code-keyword>>
< 过滤器 type = log4net.Filter.LevelRangeFilter >
< levelMin value = ERROR / >
< levelMin value = 警告 / >
< levelMax value = 致命 / >
< / filter >
< conversionPattern 值 = %date [%thread]%level%logger - %message%newline / >
< / layout >
< / appender >
< root >
< level value = DEBUG / >
< appender-ref ref = RollingLogFileAppender / >
< appender-ref ref = RollingErrorLogFileAppender / >
< / root >
< / log4net >
---- --------------背后的CODE是---------------
< span class =code-keyword> public static class ChatLogger
{
/// < 摘要 >
/// 日志类型的枚举
/// < / summary >
public enum LoggerType
{
错误日志,
调试日志,
Warninglog ,
Infolog,
Fatellog
}
私人 静态 readonly ILog chatlog = LogManager.GetLogger( RollingLogFileAppender);
private static readonly ILog errorlogs = LogManager.GetLogger( RollingErrorLogFileAppender);
/// < 摘要 >
/// 记录
的主要方法 /// < / summary >
/// < param name =logMsg < span class =code-summarycomment>> 日志消息< / param <跨度 class =code-summarycomment>>
/// < span class =code-summarycomment>< param name =logType > 日志类型< / param >
public static async 任务WriteLog( string logMsg, string logType)
{
try
{
if (Convert.ToBoolean(ConfigurationManager.AppSettings [ < span class =code-string> IsLogEnabled]。Trim()))
{
log4net.Config.XmlConfigurator.Configure( new FileInfo(HttpContext.Current.Server.MapPath( 〜/ Web.config) )); // 网络版
开关(logType)
{
case Debuglog:
await Task.Run(()= > chatlog.Debug(logMsg));
break ;
case 错误日志 :
string errorlog = logMsg.Length > 500 ? logMsg.Substring( 0 , 500 ):logMsg;
await Task.Run(()= > errorlogs.Error(errorlog));
break ;
case Warninglog :
string warnlog = logMsg.Length > 500 ? logMsg.Substring( 0 , 500 ):logMsg;
await Task.Run(()= > chatlog.Warn(warnlog));
break ;
case Infolog :
await Task.Run(()= > chatlog.Info(logMsg)) ;
break ;
case Fatellog :
string fatallog = logMsg.Length > 500 ? logMsg.Substring( 0 , 500 ):logMsg;
await Task.Run(()= > chatlog.Fatal(fatallog));
break ;
}
}
}
catch (例外情况)
{
await Task.Run(()= > chatlog.Error(ex.StackTrace.Length > 500 ?ex.StackTrace.Substring( 0 , 500 ):ex.StackTrace));
}
}
---------------
请告知我错过了什么设置或代码。
谢谢
Sudheer
我尝试过什么:
i尝试了所有设置。
请告诉我我缺少的设置或代码。
解决方案
你必须为你的追加者添加一个阈值
< appender name = ErrorAppender 类型 = log4net.Appender.RollingFileAppender >
< file type = log4net.Util.PatternString value = %property {logPath} \ Error.txt / >
< appendToFile value = true / >
< rollingStyle value = Composite / >
< datePattern value = '_'yyyy.MM.dd'.txt ' / >
< maxSizeRollBackups value = - 1 / >
< maximumFileSize value = 10MB / >
< layout type = log4net.Layout.PatternLayout >
< conversionPattern value = [%date](ID:% 3thread) - %-5level%logger:%message%newline / >
< / layout >
< threshold value = 错误 / >
< lockingModel type = log4net.Appender.FileAppender + MinimalLock / >
< / appender >
I am writting log using log4net and i am writting seprate file for exception and info.
But when i am writing any exception It's writting in both file. it should log only in Error file not in both file
Below is my configuration file :
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
</configSections>
<log4net debug="true">
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<file value=".\Log\ChatLog.log" />
<appendToFile value="true" />
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="10MB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="INFO" />
<levelMin value="DEBUG" />
</filter>
<conversionPattern value="%level %username %message%newline" />
</layout>
</appender>
<appender name="RollingErrorLogFileAppender" type="log4net.Appender.RollingFileAppender">
<file value=".\Log\ErrorLog.log" />
<appendToFile value="true" />
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="10MB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="ERROR" />
<levelMin value="WARNING" />
<levelMax value="FATAL" />
</filter>
<conversionPattern value="%date [%thread] %level %logger - %message%newline" />
</layout>
</appender>
<root>
<level value="DEBUG" />
<appender-ref ref="RollingLogFileAppender" />
<appender-ref ref="RollingErrorLogFileAppender" />
</root>
</log4net>
------------------ And COde behind is ---------------
public static class ChatLogger
{
/// <summary>
/// Enum for Log Type
/// </summary>
public enum LoggerType
{
Errorlog,
Debuglog,
Warninglog,
Infolog,
Fatellog
}
private static readonly ILog chatlog = LogManager.GetLogger("RollingLogFileAppender");
private static readonly ILog errorlogs = LogManager.GetLogger("RollingErrorLogFileAppender");
/// <summary>
/// main method to log
/// </summary>
/// <param name="logMsg">log message</param>
/// <param name="logType">log type</param>
public static async Task WriteLog(string logMsg, string logType)
{
try
{
if (Convert.ToBoolean(ConfigurationManager.AppSettings["IsLogEnabled"].Trim()))
{
log4net.Config.XmlConfigurator.Configure(new FileInfo(HttpContext.Current.Server.MapPath("~/Web.config"))); // Web version
switch (logType)
{
case "Debuglog":
await Task.Run(() => chatlog.Debug(logMsg));
break;
case "Errorlog":
string errorlog = logMsg.Length > 500 ? logMsg.Substring(0, 500) : logMsg;
await Task.Run(() => errorlogs.Error(errorlog));
break;
case "Warninglog":
string warnlog = logMsg.Length > 500 ? logMsg.Substring(0, 500) : logMsg;
await Task.Run(() => chatlog.Warn(warnlog));
break;
case "Infolog":
await Task.Run(() => chatlog.Info(logMsg));
break;
case "Fatellog":
string fatallog = logMsg.Length > 500 ? logMsg.Substring(0, 500) : logMsg;
await Task.Run(() => chatlog.Fatal(fatallog));
break;
}
}
}
catch (Exception ex)
{
await Task.Run(() => chatlog.Error(ex.StackTrace.Length > 500 ? ex.StackTrace.Substring(0, 500) : ex.StackTrace));
}
}
---------------
Please tell me what setting or code i am missing.
Thanks
Sudheer
What I have tried:
i have tried all setting .
Please tell me what setting or code i am missing.
解决方案
You have to add a threshold value to your appender
<appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender"> <file type="log4net.Util.PatternString" value="%property{logPath}\Error.txt" /> <appendToFile value="true" /> <rollingStyle value="Composite" /> <datePattern value="'_'yyyy.MM.dd'.txt'" /> <maxSizeRollBackups value="-1" /> <maximumFileSize value="10MB" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="[%date] (ID: %3thread) - %-5level %logger: %message%newline" /> </layout> <threshold value="ERROR" /> <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> </appender>
这篇关于无法使用log4net在不同的-2文件中写入日志的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文