标签: log4net-configuration

log4net - 使用多个配置文件进行配置

我有一个由主机和可插拔模块(插件)组成的应用程序.

我希望能够为主机和每个其他模块配置log4net.它们中的每一个都应该有自己的配置文件,每个文件都会记录到不同的文件中.

只有主机具有App.config文件.插件有自己的配置文件,包含log4net配置部分.

从其中一个插件调用XmlConfigurator.Configure会覆盖主机的app.config log4net定义.

是否有一种简单的方法来添加配置而不是覆盖它们?

谢谢,盖.

log4net log4net-configuration

26
推荐指数
3
解决办法
9706
查看次数

log4net将无法从app.config中读取

我为log4net配置了两个相同的项目.一个项目记录正常; 但是,另一个根本没有记录.

Logger在不登录的回报项目IsFatalEnabled = false,IsErrorEnabled = false,IsWarnEnabled = false,IsInforEnabled = falseIsDebugEnabled = false.

我已经从一个项目复制并粘贴到另一个项目中,完全替换了文件并尝试删除所有空格.

什么可能导致一个项目没有正确地从app.config读取正确的级别?

的app.config:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
  </configSections>
  <log4net>
    <appender name="FileAppender" type="log4net.Appender.FileAppender">
      <file value="logfile.txt" />
      <appendToFile value="true" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date: %-5level – %message%newline" />
      </layout>
    </appender>
    <root>
      <level value="DEBUG" />
      <appender-ref ref="FileAppender" />
    </root>
  </log4net>
</configuration>
Run Code Online (Sandbox Code Playgroud)

Program.cs中

using log4net;

class Program
{
    private static readonly ILog Log …
Run Code Online (Sandbox Code Playgroud)

log4net log4net-configuration

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

Log4Net - 仅针对某些文件注销Exception堆栈跟踪

我目前在我的应用程序中使用log4net有多个日志文件.

我有一个顶级日志文件,其中包含每种类型的消息.我还有一个错误日志文件,其中只包含错误信息.我正在尝试配置它,以便特定的异常详细信息和堆栈跟踪仅出现在错误日志文件中.

我正在使用的电话是 Log.Error(myMessage, myException);

我的配置如下:

<configuration>
  <log4net>

    <root>
     <level value="ALL"/>
     <appender-ref ref="GeneralTextLog"/>
     <appender-ref ref="ErrorTextLog"/>
    </root>

<!-- The general appender rolls by date -->
<appender name="GeneralTextLog" type="log4net.Appender.RollingFileAppender">
  <filter type="log4net.Filter.LevelRangeFilter">
    <level value="ALL"/>
  </filter>
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%d{HH:mm:ss.fff} [%type] %-5p %message%n"/>
  </layout>
  <rollingStyle value="Date"/>
  <file value="C:/Logs/General_"/>
  <datePattern value="yyyy_MM_dd'.log'" />
  <appendToFile value="true"/>
  <staticLogFileName value="false"/>
</appender>

<!-- The Error appender rolls by date -->
<appender name="ErrorTextLog" type="log4net.Appender.RollingFileAppender">
  <filter type="log4net.Filter.LevelRangeFilter">
    <levelMin value="WARN"/>
    <levelMax value="FATAL"/>
  </filter>
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%d{HH:mm:ss.fff} [%type] %-5p %message%newline%exception"/>
  </layout>
  <rollingStyle value="Date"/> …
Run Code Online (Sandbox Code Playgroud)

.net log4net log4net-configuration

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

如何将不同的日志级别记录到log4net中的不同日志appender

我有一个WinForm,它显示日志信息,但我希望它只显示INFO级别,但我希望日志文件中的日志也包含DEBUG级别.

以下是我的配置:

<?xml version="1.0" encoding="utf-8" ?>
<!-- This section contains the log4net configuration settings -->
<log4net>
  <!-- Define some output appenders -->

  <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">
    <file value="${ALLUSERSPROFILE}\\Application Data\\logs\\Gateway" />
    <appendToFile value="true" />
    <rollingStyle value="Date" />
    <param name="StaticLogFileName" value="false" />
    <datePattern value=".yyyyMMdd.lo\g" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date | [%thread] | %-5level | %logger | %message %newline" />
    </layout>
  </appender>

  <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
    </layout>
  </appender>

  <appender name="ColoredConsoleAppender" type="log4net.Appender.ColoredConsoleAppender">
    <mapping>
      <level value="DEBUG" …
Run Code Online (Sandbox Code Playgroud)

log4net log4net-configuration

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

如何在app start上禁用创建空日志文件?

我已成功在我的应用程序中配置了log4net,但有一件事对我来说有点烦人.

即使没有错误发生,我的应用程序启动后也会创建(空)日志文件.我想在出现一些错误后才创建日志文件.

c# log4net winforms log4net-configuration

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

Log4net不会登录到控制台(WinForms应用程序)

我刚开始使用Log4Net库并且在配置时遇到问题.我不需要任何特别的东西.我将它用于Winforms应用程序,需要基本文件和控制台日志记录.为了保持尽可能简单,我使用App.config进行配置并使用从Log4Net项目网站获取的默认值:App.config:

<?xml version="1.0"?>
<configuration>
  <appSettings>
    <add key="ProjectFolder" value="D:\Documents\my documents\Themis\Projects"/>
  </appSettings>
  <configSections>
    <section name="log4net"
       type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
  </configSections>
  <log4net>
    <appender name="LogFileAppender" type="log4net.Appender.FileAppender">
      <param name="File" value="ThemisLog.txt" />
      <param name="AppendToFile" value="true" />
      <layout type="log4net.Layout.PatternLayout">
        <param name="Header" value="[Header]\r\n" />
        <param name="Footer" value="[Footer]\r\n" />
        <param name="ConversionPattern" value="%d [%t] %-5p %c %m%n" />
      </layout>
    </appender>

    <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender" >
      <layout type="log4net.Layout.PatternLayout">
        <param name="Header" value="[Header]\r\n" />
        <param name="Footer" value="[Footer]\r\n" />
        <param name="ConversionPattern" value="%d [%t] %-5p %c %m%n" />
      </layout>
    </appender>

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

.net log4net log4net-configuration

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

Log4Net多个记录器

首先,我在其他主题中看到了很多答案和提示(最相似的是:Log4Net:多个记录器),但没有适用的答案.

我希望有2个记录器具有不同的文件追加器,并限制每个记录器写入根记录器.它是控制台应用程序.以下全部代码:

using System;
using System.Diagnostics;
using System.Linq;
using log4net;

namespace Test_log4net
{
class Program
{
    static void Main(string[] args)
    {
        log4net.Config.XmlConfigurator.Configure();

        ILog logger = LogManager.GetLogger("Async");
        logger.Info("started async");
        Console.WriteLine("Logger: {0}", (logger as log4net.Core.LogImpl).Logger.Name);
        Console.WriteLine("Appenders: {0}", string.Join(", ", (logger as log4net.Core.LogImpl).Logger.Repository.GetAppenders().ToList().Select(appendr => appendr.Name)));


        ILog logger2 = LogManager.GetLogger("Sync");
        logger2.Info("started sync"); //changed: from logger -> to logger2 on 10/21/2014
        Console.WriteLine("Logger: {0}", (logger2 as log4net.Core.LogImpl).Logger.Name);
        Console.WriteLine("Appenders: {0}", string.Join(", ", (logger2 as log4net.Core.LogImpl).Logger.Repository.GetAppenders().ToList().Select(appendr => appendr.Name)));

        Console.ReadKey();
    }       
}
}
Run Code Online (Sandbox Code Playgroud)

和App.config文件:

<?xml version="1.0" encoding="utf-8" …
Run Code Online (Sandbox Code Playgroud)

logging rollingfileappender log4net-configuration

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

Log4Net:多个记录器

我有以下log4net配置:

<log4net>
  <appender name="A1" type="log4net.Appender.RollingFileAppender">
    <file type="log4net.Util.PatternString" value="C:\path1.log" />
  </appender>

  <appender name="A2" type="log4net.Appender.RollingFileAppender">
    <file type="log4net.Util.PatternString" value="C:\path2.log" />
  </appender>

  <logger name="A1Logger">
    <level value="ALL" />
    <appender-ref ref="A1" />
  </logger>

  <logger name="A2Logger">
    <level value="ALL" />
    <appender-ref ref="A2" />
  </logger>

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

然后在代码中我执行以下操作:

var logger1 = LogManager.GetLogger("A1Logger");
var logger2 = LogManager.GetLogger("A2Logger");
Run Code Online (Sandbox Code Playgroud)

但两者都记录到同一个文件C:\path1.log.

我究竟做错了什么?

log4net log4net-configuration

14
推荐指数
1
解决办法
7032
查看次数

log4net过滤器 - 如何编写和过滤以忽略日志消息

我正在努力在log4net中编写一个AND条件过滤器.如果它是nLog,我可以这样写:

<logger name="*" minlevel="Info" xsi:type="NLogLoggerRule" writeTo="FooLogger" >
  <filters>
    <when condition="equals('${event-context:item=UserID}', 'TESTUSER') 
                 and equals('${event-context:item=URL}','/foo/foobar.aspx')" 
          action="Ignore" />
  </filters>
</logger>
Run Code Online (Sandbox Code Playgroud)

我不知道如何在log4net中编写相同的过滤器.在写一个条件时,我迄今为止取得了成功:

<appender>
   ....
   <filter type="log4net.Filter.PropertyFilter">
      <key value="URL" />
      <stringToMatch value="/foo/foobar.aspx" />
      <acceptOnMatch value="false" />
   </filter>
</appender>
Run Code Online (Sandbox Code Playgroud)

如何使用log4net过滤器编写AND条件?请帮忙.

log4net log4net-configuration log4net-filter

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

如何使用log4net在AppData文件夹中创建文件

如何在appData文件夹中创建日志文件.路径为C:\ Users\MYNAME\AppData\Roaming\Project\My Project\Application.我的项目启动后,将在此路径硬编码的路径上创建项目文件夹.如何使用log4net将我的日志文件添加到此文件夹中?我在配置文件中进行了更改

<?xml version="1.0"?>
<configuration>
<configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
<log4net>
    <appender name="Console" type="log4net.Appender.ConsoleAppender">
        <layout type="log4net.Layout.PatternLayout">
            <!-- Pattern to output the caller's file name and line    number -->
            <conversionPattern value="%5level [%thread] (%file:%line) - %message%newline" />
        </layout>
    </appender>
    <appender name="RollingFile" type="log4net.Appender.RollingFileAppender">

        <file value="${APPDATA}\\Roaming\\Project\\My Project\\Application\\Log.txt"/>
        <appendToFile value="true" />
        <maximumFileSize value="100KB" />
        <maxSizeRollBackups value="10" />
        <layout type="log4net.Layout.PatternLayout">            
            <conversionPattern value="%level %thread %logger - %message%newline" />
        </layout>
    </appender>
    <root>
        <level value="ALL" />
        <appender-ref ref="Console" />
        <appender-ref ref="RollingFile" />
    </root>
</log4net>
<startup>
    <supportedRuntime version="v4.0" …
Run Code Online (Sandbox Code Playgroud)

log4net app-config c#-4.0 log4net-configuration

14
推荐指数
1
解决办法
9627
查看次数