Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 强制log4net日志记录级别_C#_.net_Log4net - Fatal编程技术网

C# 强制log4net日志记录级别

C# 强制log4net日志记录级别,c#,.net,log4net,C#,.net,Log4net,我的一位同事在源代码中禁用了日志级别检查: private static void Log(string source, EnumLogType logType, string msg) { .... switch (logType) { case EnumLogType.ERROR: //if (log.IsErrorEnabled) { log.Error(logMsg); }

我的一位同事在源代码中禁用了日志级别检查:

private static void Log(string source, EnumLogType logType, string msg)
    {
        ....

        switch (logType)
        {
            case EnumLogType.ERROR:
                //if (log.IsErrorEnabled) { log.Error(logMsg); }
                log.Error(logMsg);
                break;
            case EnumLogType.WARNING:
                //if (log.IsWarnEnabled) { log.Warn(logMsg); }
                log.Warn(logMsg); 
                break;
            case EnumLogType.INFO:
                //if (log.IsInfoEnabled) { log.Info(logMsg); }
                log.Info(logMsg); 
                break;
            case EnumLogType.VERBOSE:
                //if (log.IsDebugEnabled) { log.Debug(logMsg); }
                log.Debug(logMsg); 
                break;
            default:
                log.Debug(logMsg);
                break;
        }
    }
因此,我们的产品现在正在编写调试日志,即使配置文件中的级别设置为ERROR


有没有办法强制log4net只记录错误消息?换句话说,我是否可以通过配置log4net来强制它检查日志记录级别,而无需编辑和重新编译源代码?

您的同事只禁用了您自己的
EnumLogType
级别设置。
log4net日志记录级别应该仍然有效

在AppName.Exe.config或Web.config中,使用以下内容:

<log4net>
    ...
    <logger name="...">
      ...
      <level value="Error" />
    </logger>
</log4net>

...
...

您使用什么附加器?如果是DatabaseAppender,您可以尝试更改sql命令文本

或者,您可以使用filter部分编辑log4net.config文件,以便仅为特定日志级别应用特定的appender

<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
    <file type="log4net.Util.PatternString" value="{LogName}" />
    <appendToFile value="true" />
    <rollingStyle value="Date" />
    <datePattern value="yyyyMMdd" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="[%date] [%level] [%thread] [%logger] [%P{userLoginName}] [%P{HostName}] [%P{IPAddress}] [%P{methodName}] [%message] [%exception]%newline" />
    </layout>
    <filter type="log4net.Filter.LevelRangeFilter">
      <levelMin value="INFO" />
      <levelMax value="WARN" />
    </filter>
  </appender>


是的,原来log4net并没有读取
log4net.config
,而是
web.config
中的
部分(尽管我在
AssemblyInfo.cs
中指向log4net.config)。所以我试图配置错误的文件…结果是log4net没有读取
log4net.config
,而是
web.config
中的
部分(尽管我在
AssemblyInfo.cs
中指向log4net.config)。所以我试图配置错误的文件。。。