【问题标题】:log4net not writing in loglog4net 没有写入日志
【发布时间】:2016-05-09 22:55:59
【问题描述】:

我正在使用 C# .Net 编写一个网络表单电子邮件发送应用程序,我想在每次发送邮件时记录在日志中。

这是我的网络配置文件

   <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
  </configSections>


  <log4net>
    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
      <file value="TestLog.txt"/>
      <appendToFile value="true"/>
      <rollingStyle value="Composite"/>
      <datePattern value="yyyyMMdd"/>
      <maxSizeRollBackups value="10"/>
      <maximumFileSize value="10MB"/>
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="[%d{yyyy-MM-dd HH:mm:ss}] [%p] [%c:%L] - %m%n"/>
      </layout>
    </appender>
    <root>
      <level value="DEBUG"/>
      <appender-ref ref="RollingLogFileAppender"/>
    </root>
  </log4net>

 protected void Page_Load(object sender, EventArgs e)
    {
      log4net.Config.XmlConfigurator.Configure();
    }

我的类定义下有这个属性

public partial class enviarMails : System.Web.UI.Page
{
    private static readonly ILog logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);

我有这种写日志的方法

public void escribirLog(String msj) 
        {

            logger.Error(msj);

        }

【问题讨论】:

  • 我通过 NuGet 添加了 log4net 参考
  • 运行您的应用程序池的用户很可能没有目标日志文件的写入权限。您显示的其他所有内容看起来都很好。
  • 您在其下运行站点的用户是否对您的本地路径具有写入权限?尝试其他路径,例如 C:\temp\testlog.txt
  • 这个?
  • @alanrubinoff 是的。并且您只需要在应用启动时调用XmlConfigurator.Configure(),而不是在每个页面加载时。

标签: c# log4net


【解决方案1】:

您可以在代码中更改至少 2 件事,以使其变得更好/或让它开始记录:

  1. 将配置调用移至项目的启动。或者让它成为 属性。
  2. 您的 TestLog.txt 将进入正在运行的应用程序的当前目录。您可能在该目录中没有任何权限。因此,将其更改为您知道自己拥有权利的完整路径
  3. 启用 log4net 内部调试以查看未创建文件的内部错误。或者查看它的创建位置。

【讨论】:

    猜你喜欢
    • 2023-03-31
    • 2016-05-08
    • 2012-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多