Click here to Skip to main content
15,886,049 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
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 :
XML
<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 ---------------
C#
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 .
JavaScript
Please tell me what setting or code i am missing.
Posted
Updated 19-Dec-16 23:04pm

1 solution

You have to add a threshold value to your appender

XML
<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>
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900