asp.net log4net滚动文件附加器不工作

bwleehnv  于 2023-02-26  发布在  .NET
关注(0)|答案(5)|浏览(157)

我有以下配置:

<log4net>
    <root>
      <level value="All"/>
      <appender-ref ref="RollingFileAppender"/>
    </root>
    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
      <file value="mylog.log"/>
      <appendToFile value="true"/>
      <preserveLogFileNameExtension value="true"/>
      <rollingStyle value="Composite"/>
      <datePattern value=".yyyyMMdd"/>
      <maximumFileSize value="5MB"/>
      <countDirection value="1"/>
      <maxSizeRollBackups value="-1"/>
      <staticLogFileName value="false"/>
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%date [%thread] %-5level %logger - %message%newline"/>
      </layout>
    </appender>
  </log4net>

以及global.asax中的以下代码:

Sub Application_Start()
        AreaRegistration.RegisterAllAreas()

        RegisterGlobalFilters(GlobalFilters.Filters)
        RegisterRoutes(RouteTable.Routes)

        BasicConfigurator.Configure();

        LogManager.GetLogger(typeof(Global_asax)).Error("Logger configured")

    End Sub

对于上面配置中的标记文件,我尝试了C:\my folder\mylog.log以及上面看到的mylog.log
但是,我没有看到在任何地方生成此文件,也没有例外。
环境:VS 2013 ASP.Net VB。通过调试菜单运行。当我运行IISExpress是由VS2013启动和网站运行。但没有日志看到。
我已经尝试了各种组合的文件标签,但没有工作。
有人能帮忙吗?

rsl1atfo

rsl1atfo1#

将debug =“true”添加到<log4net>标记(即<log4net debug="true">)可以帮助解决此问题

wecizke3

wecizke32#

这是我最后做的工作的最终版本:

<log4net>
    <root>
      <level value="ALL"/>
      <appender-ref ref="RollingFileAppender"/>
    </root>
    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
      <file value="logs\log4net.log"/>
      <datePattern value="yyyy-MM-dd'-FULL.log'" />
      <appendToFile value="true"/>
      <preserveLogFileNameExtension value="true"/>
      <rollingStyle value="Size"/>      
      <maximumFileSize value="250KB"/>      
      <maxSizeRollBackups value="-1"/>
      <staticLogFileName value="false"/>
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%date [%thread] %-5level %logger - %message%newline"/>
      </layout>
    </appender>
  </log4net>

还有

XmlConfigurator.Configure()
LogManager.GetLogger(typeof(Global_asax)).Error("Logger configured")

这将记录到应用程序目录中的log\log4net.log(即我的代码所在的位置)

jrcvhitl

jrcvhitl3#

这曾经对我很有效(我已经切换到更轻、更好配置的NLog),日志每天滚动,写在应用程序路径下一个名为“日志”的子文件夹中。

<appender name="RollingDebugAppender" type="log4net.Appender.RollingFileAppender">
    <file value="Logs\" />
    <datePattern value="yyyy-MM-dd'-FULL.log'" />
    <staticLogFileName value="false" />
    <appendToFile value="true" />
    <rollingStyle value="Composite" />
    <maxSizeRollBackups value="100" />
    <maximumFileSize value="5MB" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
    </layout>
  </appender>
nx7onnlm

nx7onnlm4#

您应该打开log4net的内部调试来找出失败的原因...
示例web.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
 <appSettings>
    <add key="log4net.Internal.Debug" value="true"/>
  </appSettings>

  <system.diagnostics>
    <trace autoflush="true">
      <listeners>
        <add name="textWriterTraceListener"
             type="System.Diagnostics.TextWriterTraceListener"
             initializeData="C:\log4net_internal.log"/>
      </listeners>
    </trace>
  </system.diagnostics>
</configuration>

有关here的详细信息,请参阅故障排除部分。

eqqqjvef

eqqqjvef5#

  • _%日期{yyyyMMdd}.log

下面是关键,如果这是丢失的你将看到像上面的日志

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
 <appSettings>
    <add key="log4net.Internal.Debug" value="true"/>
  </appSettings>

  <system.diagnostics>
    <trace autoflush="true">
      <listeners>
        <add name="textWriterTraceListener"
             type="System.Diagnostics.TextWriterTraceListener"
             initializeData="C:\log4net_internal.log"/>
 **<staticLogFileName value="false" />**
      </listeners>
    </trace>
  </system.diagnostics>
</configuration>

相关问题