标签: log4net-configuration

非常简单的文件appender日志记录无法正常工作

这是我的web.config信息:

  <configSections>
        <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
      </configSections>
      <log4net>
        <root>
                <level value="ALL" />
        </root>
        <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
              <file value="c:\temp\log-file.txt" />
              <appendToFile value="true" />
              <rollingStyle value="Size" />
              <maxSizeRollBackups value="10" />
              <maximumFileSize value="1MB" />
              <staticLogFileName value="true" />
              <layout type="log4net.Layout.SimpleLayout" />
        </appender>
      </log4net>
...
Run Code Online (Sandbox Code Playgroud)

这是初始化记录器的代码:

protected void SendMessage()
    {
        log4net.Config.XmlConfigurator.Configure(); 
        ILog log = LogManager.GetLogger(typeof(Contact));
        ...
        log.Info("here we go!");
        log.Debug("debug afasf");
        ...
     }
Run Code Online (Sandbox Code Playgroud)

无论我做什么,它都不起作用.我正确地引用了'log4net.dll',通过调试应用程序,我可以看到日志对象正在正常启动.这是一个asp.net 3.5框架Web项目.有什么想法/建议吗?

我原本认为这个错误可能是由于文件写入权限约束,但似乎并非如此(或者我认为).

c# asp.net logging log4net log4net-configuration

13
推荐指数
2
解决办法
2万
查看次数

使用带有智能感知的log4net的Vs2010

我正在使用vs2010,我需要记录一个多线程应用程序.所以我决定使用log4net,但由于我不习惯使用它,因此Intellisense值得.

我从http://csharptest.net/downloads/schema/log4net.xsd下载.xsd 并将其放在VSFolder/Xml/Schemas中.但是,我怎么能对我的log4net.config说使用XSD Schema?

intellisense log4net visual-studio-2010 log4net-configuration

13
推荐指数
1
解决办法
7641
查看次数

使用blob存储配置和监视log4net

我们使用log4net和自定义appender来记录我们从azure机器到table store的东西,这很好用.我们现在需要的是使用blob-store在一个地方配置我们所有实例的日志记录,并且能够在运行时修改它,只需修改blob存储中的配置文件,不久之后我的所有机器都应该知道这个更改.

简单地说我需要的是:

XmlConfigurator.Configure(Uri blobStoreUri, bool watch=true)
Run Code Online (Sandbox Code Playgroud)

甚至更好:

XmlConfigurator.ConfigureAndWatch(string blobStoreUrl, TimeSpan refreshInterval)
Run Code Online (Sandbox Code Playgroud)

我用Google搜索,但却找不到那样的东西.实现这个的最佳方法是什么,或者你知道任何类似的实现吗?

谢谢almir

log4net azure azure-storage-blobs log4net-configuration

13
推荐指数
1
解决办法
900
查看次数

MSTest - 如何为UnitTest项目初始化log4net?

我有一个用于测试ASP.NET MVC项目的Visual Studio单元测试项目.

将程序集级别log4net.Config.XmlConfigurator属性添加到AssemblyInfo.cs不起作用,SO上的其他人发现他们必须使用直接调用log4net.Config.XmlConfigurator.Configure();

问题是,如何才能对单元测试进行此操作?Microsoft.VisualStudio.TestTools.UnitTesting.AssemblyInitialize在类方法上使用属性的答案不起作用.

对我来说,这段代码导致InvalidOperationException输出窗口登录,测试会话提前爆炸.

[TestClass]
public sealed class Startup
{
    [AssemblyInitialize]
    public void Configure()
    {
        System.Diagnostics.Debug.Write("Microsoft.VisualStudio.TestTools.UnitTesting.AssemblyInitialize");
    }
}
Run Code Online (Sandbox Code Playgroud)

阅读文档,MSDN表示不要AssemblyInitialize在ASP.NET的测试项目中使用,因为它们可能不止一次被调用.

那么如何才能在运行任何测试之前配置log4net?

c# asp.net-mvc unit-testing log4net-configuration visual-studio-2012

13
推荐指数
1
解决办法
8363
查看次数

Log4net appender阈值无法正常工作

我在我的log4net配置中为我的应用程序设置了一个logfileAppender和一个consoleAppender.我希望logfile appender只写上面的ERROR消息和控制台appender来编写DEBUG及以上版本.

我的配置是:

<log4net debug="false">

<appender name="LogFileAppender" type="log4net.Appender.FileAppender,log4net" >
  <param name="File" value="log.txt" />
  <param name="AppendToFile" value="true" />
  <layout type="log4net.Layout.PatternLayout,log4net">
    <param name="ConversionPattern" value="%d %M - %m%n" />
  </layout>
  <threshold value="ERROR"/>
</appender>

<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender"   >
  <layout type="log4net.Layout.PatternLayout">
    <param name="ConversionPattern" value="%d %m%n" />
  </layout>
</appender>


<root>
  <priority value="DEBUG" />
  <appender-ref ref="ConsoleAppender" />
  <appender-ref ref="LogFileAppender" />
</root>

</log4net>
Run Code Online (Sandbox Code Playgroud)

我发现ERROR和DEBUG都输出到我的logfile appender.如何将其限制为仅ERROR?

log4net log4net-configuration

12
推荐指数
3
解决办法
2万
查看次数

如何在页眉/页脚中使用日期模式?

这是我的app.config中的appender配置.这只是打印出文字字符串而不是将其翻译成日期(即,字面上打印"[START:%date {MM/dd/yy HH:mm}]").

<appender name="RollingLogFileAppender"
          type="log4net.Appender.RollingFileAppender">
  <file value="C:\somelog" />
  <appendToFile value="true" />
  <rollingStyle value="Date" />
  <datePattern value="-yyyy-MM-dd'.txt'" />
  <layout type="log4net.Layout.PatternLayout">
    <header value="[START:  %date{MM/dd/yy HH:mm} ]&#13;&#10;" />
    <conversionPattern value="%date{yyyy-MM-dd HH:mm:ss} - %message" />
    <footer value="[END]&#13;&#10;&#13;&#10;" />
  </layout>
</appender>
Run Code Online (Sandbox Code Playgroud)

如何在标题中打印日期/时间?

log4net log4net-configuration

12
推荐指数
2
解决办法
2万
查看次数

添加log4net配置时出现异常

我在App.cs文件的第一行代码(创建一个只读变量)上收到错误.我得到的错误是:

PresentationFramework.dll中出现类型'System.TypeInitializationException'的第一次机会异常PresentationFramework.dll中出现未处理的类型'System.TypeInitializationException'异常附加信息:'System.Windows.Application'的类型初始化程序引发了异常.

这是我在VS中获得的消息弹出窗口:

PresentationFramework.dll中出现未处理的"System.TypeInitializationException"类型异常

附加信息:'System.Windows.Application'的类型初始化程序引发了异常.

我所做的唯一改变是将此添加到我的app.config:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <startup> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.1"/>
  </startup>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
  </configSections>
  <log4net>
    <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender" >
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%ndc] - %message%newline" />
      </layout>
    </appender>
    <root>
      <level value="INFO" />
      <appender-ref ref="ConsoleAppender" />
    </root>
  </log4net>
</configuration>
Run Code Online (Sandbox Code Playgroud)

c# log4net log4net-configuration

12
推荐指数
1
解决办法
7862
查看次数

如何为类库包含log4net?

我想将日志功能实现到类库中,类库本身在web服务中引用.我尝试添加app.config并完成所需的一切,但似乎抛出异常时,log4net什么都不做.

我的app.config

<configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
  </configSections>
  <log4net>
    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
      <file value="D:\\mylogfile.txt" />
      <appendToFile value="true" />
      <rollingStyle value="Size" />
      <maxSizeRollBackups value="5" />
      <maximumFileSize value="10MB" />
      <staticLogFileName value="true" />
      <filter type="log4net.Filter.StringMatchFilter">
        <stringToMatch value="test" />
      </filter>
      <filter type="log4net.Filter.StringMatchFilter">
        <stringToMatch value="error" />
      </filter>
      <filter type="log4net.Filter.DenyAllFilter" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %level %logger - %message%newline%exception" />
      </layout>
    </appender>
    <root>
      <level value="INFO"/>
      <appender-ref ref="RollingFileAppender"/>
      <appender-ref ref="ConsoleAppender" />
    </root>
  </log4net>
Run Code Online (Sandbox Code Playgroud)

在AssemblyInfo.cs中:

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "app.config")]
Run Code Online (Sandbox Code Playgroud)

在LogManager.cs中:

private static readonly ILog Log = log4net.LogManager.GetLogger …
Run Code Online (Sandbox Code Playgroud)

.net c# log4net log4net-configuration

11
推荐指数
3
解决办法
3万
查看次数

Log4Net LevelEvaluator当smtpAppender的bufferSize大于1时忽略

我已经使用RollingLogFileAppender和SmtpAppender配置了log4net,目的是将DEBUG级别记录到RollingLogFileAppender,并将FATAL记录到SmtpAppender:

<appender name="SmtpAppender" type="log4net.Appender.SmtpAppender">
  <to value="test@test.com" />
  <from value="test@test.com" />
  <subject value="Fatal Error" />
  <smtpHost value="smtp.test.com" />
  <SMTPPort value="366"/>
  <Username value="test@test.com"/>
  <Password value="password"/>      
  <bufferSize value="1" />
  <lossy value="true" />
  <evaluator type="log4net.Core.LevelEvaluator">
    <threshold value="FATAL"/>
  </evaluator>      
  <layout type="log4net.Layout.PatternLayout">
  <conversionPattern value="%date [%thread] %-5level %logger [%ndc] - %message%newline"                             />
  </layout>
</appender>

<root>
  <level value="DEBUG" />
  <appender-ref ref="RollingLogFileAppender" />
  <appender-ref ref="SmtpAppender" />
</root>
Run Code Online (Sandbox Code Playgroud)

这完全有效,直到我增加bufferSize.当我这样做时,所有级别都通过电子邮件发送,log4net.Core.LevelEvaluator似乎被忽略.我也尝试过使用LevelRangeFilter和LevelMatchFilter但是这些配置似乎根本没有收到任何电子邮件.

log4net log4net-configuration

11
推荐指数
1
解决办法
3214
查看次数

带有EventLogAppender的log4net不会记录

以下配置没有任何反应.

App.config中

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
  </configSections>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
    </startup>
  <log4net>
    <appender name="EventLogAppender" type="log4net.Appender.EventLogAppender" >
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
      </layout>
    </appender>
  </log4net>
</configuration>
Run Code Online (Sandbox Code Playgroud)

Form1.cs(示例)

public partial class Form1 : Form
{
    private static readonly ILog log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);

    public Form1()
    {
        InitializeComponent();

        log.Fatal("Test!");
    }
}
Run Code Online (Sandbox Code Playgroud)

log4net log4net-configuration log4net-appender

11
推荐指数
2
解决办法
1万
查看次数