小编Phi*_*p M的帖子

log4Net中记录器和根级别之间的区别?

我刚刚在log4net配置中遇到了两个部分:

<logger name="File">
  <level value="All" />
</logger>
<root>
  <level value="INFO" />
</root>
Run Code Online (Sandbox Code Playgroud)

我可以知道在记录器和根标签上指定级别有什么区别吗?他们之间有什么区别?

c# asp.net log4net

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

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
查看次数

使用c#中的过滤器的log4net纯代码配置

我试图纯粹通过代码配置Log4Net,但是当我使用最小配置时,我被NHibernate和流畅的界面记录消息所淹没.

所以,我想做的很简单.告诉Log4Net只显示我的单个类的日志消息.我玩弄了一下,但无法搞清楚......

任何人都可以提供帮助,我认为以下代码说明了我的想法:

var filter = new log4net.Filter.LoggerMatchFilter();
filter.LoggerToMatch = typeof(DatabaseDirectory).ToString();
filter.AcceptOnMatch = false;

var x = new log4net.Appender.ConsoleAppender();
x.Layout = new log4net.Layout.SimpleLayout();
x.AddFilter(filter);

log4net.Config.BasicConfigurator.Configure(x);
Run Code Online (Sandbox Code Playgroud)

好的,谢谢你的帮助,但这里一定有问题.但我越来越近了.我尝试了XML配置,它有更多的文档.我使用以下XML配置设法实现了预期的结果.上面的"纯代码"版本中必定存在一些错误配置.

以下XML配置提供"正确"输出,这与上面代码中的配置不同.有谁看到了差异?

<log4net>
<root>
  <level value="DEBUG" />
  <appender-ref ref="ConsoleAppender" />
</root>
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender" >
  <filter type="log4net.Filter.LoggerMatchFilter">
    <loggerToMatch value="Examples.FirstProject.Entities.DatabaseDirectory"/>
  </filter>
  <filter type="log4net.Filter.DenyAllFilter" />
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="[%C.%M] %-5p %m%n" />
  </layout>
</appender>
Run Code Online (Sandbox Code Playgroud)

c# configuration log4net

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

非常简单的文件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将当前日期附加到日志文件

我想要做的就是将当前日期和时间附加到我的日志文件中,例如:

"export_(Wed_Feb_21_2009_at_1_36_41PM)"
Run Code Online (Sandbox Code Playgroud)

这是我的app.config中的当前配置

<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
    <file value="c:\export.txt" />
    <appendToFile value="true" />
    <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
    <rollingStyle value="Size" />
    <maxSizeRollBackups value="10" />
    <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message %stackTrace%newline" />
    </layout>
</appender>
Run Code Online (Sandbox Code Playgroud)

是否可以将日期附加到我的日志文件中,或者这是我需要在代码中执行的操作之一而不是配置?

log4net config

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

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.config

我配置我的log4net来监视对app.config文件所做的更改.

[assembly: log4net.Config.XmlConfigurator(Watch = true)]
Run Code Online (Sandbox Code Playgroud)

当我运行我的应用程序并更改配置文件中的内容时,这些更改仅在我重新启动应用程序时生效.为什么会这样?

还有办法告诉log4net监视app.config中的更改吗?喜欢:

<appender name="FileAppender" type="log4net.Appender.FileAppender" >
    <watch value="true" />
</appender>
Run Code Online (Sandbox Code Playgroud)

-------------编辑-------------

我现在尝试使用单独的配置文件:log4net.config.
它看起来像这样:

<log4net>
  <appender name="FileAppender" type="log4net.Appender.FileAppender">
    <file value="c:\log.txt" />
    <appendToFile value="true" />
    <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%d [%t] %-5p %c (line %L) -- %m%n" />
    </layout>
  </appender>
  <root>
    <appender-ref ref="FileAppender" />
  </root>
</log4net>
Run Code Online (Sandbox Code Playgroud)

在我的assemblyInfo.cs中,我写了以下内容:

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

记录到该文件的类如下所示:

ILog myLogger = LogManager.GetLogger(typeof(Form1));
myLogger.Debug("test");
Run Code Online (Sandbox Code Playgroud)

这就像旧版本一样.日志文件条目已经生成,但是当我在运行时更改我的log4net.config时,这些更改不会应用...."Watch = true"应该启用该功能,对吧?

log4net app-config watch appender

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

如何使用Log4Net在日志文件中获取当前用户名而不是AppPool标识

我们正在使用ASP.NET MVC3应用程序中的Log4Net,一切正常但我们希望在日志文件中看到当前用户名而不是应用程序池的标识,这是我们使用的appender配置:

<log4net>
    <appender name="FileAppender" type="log4net.Appender.RollingFileAppender">
      <threshold value="ALL" />
      <immediateFlush>true</immediateFlush>
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
      <encoding value="utf-8" />
      <file value="C:\Logs\MyLogs.log" />
      <appendToFile value="true" />
      <rollingStyle value="Date" />
      <maxSizeRollBackups value="30" />
      <maximumFileSize value="25MB" />
      <staticLogFileName value="true" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="[%property{log4net:HostName}] - %username%newline%utcdate - %-5level - %message%newline" />
      </layout>
    </appender>
    <root>
      <priority value="ALL" />
      <appender-ref ref="FileAppender" />
    </root>
</log4net>
Run Code Online (Sandbox Code Playgroud)

所以看起来像属性:%username正在检索以下值:

WindowsIdentity.GetCurrent().Name
Run Code Online (Sandbox Code Playgroud)

而不是我们需要的: HttpContext.Current.User

如何在web.config中轻松解决这个问题,而无需创建自定义属性或其他log4net派生类?如果可能的话,如果自定义属性是我们可以忍受的唯一方式,我猜:)谢谢!

.net c# log4net asp.net-mvc-3

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

log4net AdoNetAppender中的记录延迟了吗?

我有这样的AdoNetAppender设置:

  <log4net>
    <appender name="AdoNetAppender_SqlServer" type="log4net.Appender.AdoNetAppender">
      <connectionStringName value="DefaultConnection" />
      <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
      <commandText value="INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message]) VALUES (@log_date, @thread, @log_level, @logger, @message)" />
      <useTransactions value="false" />
      <parameter>
        <parameterName value="@log_date" />
        <dbType value="DateTime" />
        <layout type="log4net.Layout.PatternLayout" value="%date{yyyy'-'MM'-'dd HH':'mm':'ss'.'fff}" />
      </parameter>
      <parameter>
        <parameterName value="@thread" />
        <dbType value="String" />
        <size value="255" />
        <layout type="log4net.Layout.PatternLayout" value="%thread" />
      </parameter>
      <parameter>
        <parameterName value="@log_level" />
        <dbType value="String" />
        <size value="50" />
        <layout type="log4net.Layout.PatternLayout" value="%level" />
      </parameter>
      <parameter>
        <parameterName value="@logger" />
        <dbType …
Run Code Online (Sandbox Code Playgroud)

c# log4net adonetappender asp.net-mvc-4

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