Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.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创建log.txt?_C#_Asp.net Mvc_Logging_Log4net - Fatal编程技术网

C# 如何使用log4net创建log.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

我可以创建日志,但无法向其中写入异常字符串…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();
    }
}
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>