小编Phi*_*p M的帖子

log4net/EventLogAppender忽略了我的LogName

此配置应该使我的日志条目最终在自定义日志中,对吧?但它最终会出现在应用程序日志中.我的应用以管理员身份运行.运行我的应用程序后,我可以确认使用EventLog.Exists("MyLog")和创建了日志和事件源EventLog.SourceExists("MyApplication").

<appender name="EventLogAppender" type="log4net.Appender.EventLogAppender" >
  <logName value="MyLog"/>
  <applicationName value="MyApp" />
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%date [%thread] %-5level %logger - %message %exception%newline" />
  </layout>
</appender>
Run Code Online (Sandbox Code Playgroud)

编辑:我发现问题是什么,但直到8h过去,我才能"自我回答"我的问题.

c# log4net

10
推荐指数
2
解决办法
5743
查看次数

log4net没有记录调试语句

我是第一次使用log4net,并使用提供的配置示例跟踪文档,但是调试语句不记录.

信息,错误,警告和致命级别都正确记录.谁能告诉我我失踪了什么?

的app.config:

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

<log4net>
    <appender name="Console" type="log4net.Appender.ColoredConsoleAppender">

        <mapping>
            <level value="INFO" />
            <foreColor value="Green"/>
        </mapping>

        <mapping>
            <level value="DEBUG" />
            <foreColor value="Cyan,HighIntensity"/>
        </mapping>

        <mapping>
            <level value="WARN" />
            <foreColor value="Purple,HighIntensity"/>
        </mapping>

        <mapping>
            <level value="ERROR" />
            <foreColor value="Red,HighIntensity"/>
        </mapping>

        <mapping>
            <level value="FATAL" />
            <foreColor value="Yellow,HighIntensity"/>
        </mapping>

        <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="example.log" />
        <appendToFile value="true" />
        <maximumFileSize …
Run Code Online (Sandbox Code Playgroud)

c# log4net

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

log4net GenericFailure.无法获取锁定文件

我是第一次尝试配置log4net,我确定我已经正确配置了所有内容,但是,在获取空日志文件后,我打开了log4net调试器.我现在不断看到以下错误:

log4net:ERROR [RollingFileAppender] ErrorCode: GenericFailure. Unable to acquire lock on 
file "file path\file name" The process cannot access the file "file path\file name" because 
it is being used by another process.
Run Code Online (Sandbox Code Playgroud)

我目前通过我的Web.config文件配置了log4net:

<log4net debug="true">
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
  <file value="Logs\\TransferPicturesApplicationLog.txt"/>
  <appendToFile value="true"/>
  <rollingStyle value="Size"/>
  <maxSizeRollBackups value="5"/>
  <maximumFileSize value="10MB"/>
  <staticLogFileName value="true"/>
  <filter type="log4net.Filter.LevelRangeFilter">
    <param name="LevelMin" value="ERROR"/>
    <param name="LevelMax" value="DEBUG"/>
  </filter>
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%date [%thread] %level %logger - %message%newline"/>
  </layout>
  <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
</appender>
<root>
  <level value="INFO"/>
  <appender-ref ref="RollingFileAppender"/>
</root>
<logger>
  <level …
Run Code Online (Sandbox Code Playgroud)

c# log4net config

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

如何在log4net ADONetAppender中使用存储过程?

我正在使用ADONetAppender(尝试)通过存储过程记录数据(这样我可以将逻辑注入日志记录例程).

我的配置设置如下所示.谁能说出我做错了什么?

<appender name="ADONetAppender_SqlServer" type="log4net.Appender.ADONetAppender">
  <bufferSize value="1" />
  <threshold value="ALL"/>
  <param name="ConnectionType" value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
  <param name="ConnectionString" value="<MyConnectionString>" />
  <param name="UseTransactions" value="False" />
  <commandText value="dbo.LogDetail_via_Log4Net" />
  <commandType value="StoredProcedure" />
      <parameter>
         <parameterName value="@AppLogID"/>
         <dbType value="String"/>
         <size value="50" />
         <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%property{LoggingSessionId}" />
         </layout>
      </parameter>
      <parameter>
         <parameterName value="@CreateUser"/>
         <dbType value="String"/>
         <size value="50" />
         <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%property{HttpUser}" />
         </layout>
      </parameter>
      <parameter>
         <parameterName value="@Message"/>
         <dbType value="String"/>
         <size value="8000" />
         <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%message" />
         </layout>
      </parameter>
      <parameter>
         <parameterName value="@LogLevel"/> …
Run Code Online (Sandbox Code Playgroud)

logging log4net adonetappender

9
推荐指数
2
解决办法
7880
查看次数

具有复合滚动样式的Log4Net RollingFileAppender正在覆盖数据

我有一个Log4Net RollingFileAppender配置为:

<configuration>

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

  <log4net>

    <root>
      <level value="ALL" />
    </root>

    <logger name="RollingFileAppender" additivity="false">
      <level value="DEBUG"/>
      <appender-ref ref="RollingFileAppender" />
    </logger>

    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender" >
      <param name="File" value="C:\\MyLog.log" />
      <param name="AppendToFile" value="true" />
      <param name="DatePattern" value="yyyy-MM-dd"/>
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%m%n"/>
      </layout>
    </appender>

  </log4net>

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

查看文档,默认滚动样式是Composite,因此当它达到特定大小(默认值为10MB)时,它将会滚动,而不仅仅是在日期.

问题是当它达到大小时,它正在重新启动日志并且我从前半天丢失数据(它在中午左右达到这个大小).
为什么这不会只是滚动到一个新文件,所有未来的日志行都被放入MyLog.log?或者是日志正在滚动,但是在午夜,它再次滚动并覆盖过时的日志(例如,一旦达到10MB,滚动到MyLog.log2009-04-08,然后在午夜覆盖同一个文件)?

我会设置

<rollingStyle value="Date" />
Run Code Online (Sandbox Code Playgroud)

这是我要做的就是确保它只在日期边界滚动吗?我可以在Log4Net.config中动态更改,还是必须重新启动应用程序?它在IIS6上运行.

logging log4net rollingfileappender

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

AdoNetAppender参数的默认值

我正在使用log4net和AdoNetAppender.它将所有日志信息记录到表中.该表实际上有2个整数列(可以为null).

这是我的log4net配置的相关部分:

<commandText value="INSERT INTO ActivityLog ([Date],[Thread],[Level],[Logger],[Message],[DealID]) 
                 VALUES (@log_date,@thread,@log_level,@logger,@message,@DealID)" />

 //other parameters hten DealID
<parameter>
      <parameterName value="@DealID" />
      <dbType value="Int32" />
       <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%property{DealID}" />
      </layout>
    </parameter>
Run Code Online (Sandbox Code Playgroud)

我发现的是,如果我没有明确设置使用类似的东西log4net.ThreadContext.Properties["DealID"] = DealID;会引发异常:

System.FormatException occurred
  Message="Failed to convert parameter value from a String to a Int32."
  Source="System.Data"
  StackTrace:
       at System.Data.SqlClient.SqlParameter.CoerceValue(Object value, MetaType destinationType)
  InnerException: System.FormatException
       Message="Input string was not in a correct format."
       Source="mscorlib"
       StackTrace:
            at System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal)
            at System.Number.ParseInt32(String s, NumberStyles …
Run Code Online (Sandbox Code Playgroud)

log4net adonetappender

9
推荐指数
1
解决办法
9953
查看次数

使用Castle.Facilities.Logging和log4net进行日志记录

我正在努力让Castle Windsor的log4net集成工作.我用类型的公共属性编写了我的类,ILogger并在我的app.config中进行了配置,如下所示.

<configuration>
  <configsections>
    <section name="castle" type="Castle.Windsor.Configuration.AppDomain.CastleSectionHandler, Castle.Windsor" />
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
  </configsections>

  <castle>
    <facilities>
      <facility id="logging" type="Castle.Facilities.Logging.LoggingFacility, Castle.Facilities.Logging" loggingApi="log4net" />
    </facilities>
    <components>
      <component id="form1" type="WinFormsActiveRecordSample.Form1, WinFormsActiveRecordSample" />
    </components>
  </castle>
  <log4net>
    <root>
      <level value="ALL" />
      <appender-ref ref="FileAppender" />
    </root>
    <appender name="FileAppender" type="log4net.Appender.FileAppender">
      <file value="main.log" />
      <appendToFile value="true" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date{dd.MM.yy HH:mm:ss} %-5level %logger - %message%newline" />
      </layout>
    </appender>
  </log4net>
</configuration>
Run Code Online (Sandbox Code Playgroud)

在我看来,这应该是有效的,但事实并非如此.当我loggingApi="console"正确设置日志时.当我将其更改为log4net时,它什么也没做.log4net配置来自块正在运行的另一个项目.我该怎么做才能使用日志文件?必须有特殊的log4net配置吗?

谢谢你的任何提示

鲍里斯

logging log4net castle-windsor log4net-configuration

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

Log4Net +完成后发送电子邮件?

我刚刚开始使用Log4Net ...我现在想要发送一封电子邮件,其中包含附加或直接邮寄的完整日志.使用SmtpAppender的问题在于它需要一个未知的bufferSize,因为它应该发送邮件,无论是充满错误还是信息.

更新:我的配置文件

<appender name="SmtpAppender" type="log4net.Appender.SmtpAppender">

    <to value="ebb@mail.com" />
    <from value="ebb@mail.com" />
    <subject value="Backup Application - Log" />
    <smtpHost value="mailserver" />
    <authentication value="1" />
    <username value="userName" />
    <password value="mypw" />

    <port value ="25"/>
    <lossy value="true" />
    <bufferSize value="500" />

    <evaluator type="log4net.Core.LevelEvaluator">
        <threshold value="ALL"/>
    </evaluator>

    <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%timestamp [%thread] %-5level %logger – %message%newline" />
    </layout>

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

log4net

9
推荐指数
1
解决办法
6356
查看次数

在没有web.config的情况下使用log4net

我使用log4net来记录错误.

目前我下载了该文件log4net.dll,然后在global.asax文件中进行了以下更改:

private static ILog Log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);

protected void Application_Start(object sender, EventArgs e)
{
    log4net.Config.XmlConfigurator.Configure();
}
protected void Application_Error(object sender, EventArgs e)
{
    Log.Fatal("An uncaught exception occurred", this.Server.GetLastError());
}
Run Code Online (Sandbox Code Playgroud)

这些更改也是在web.config文件中进行的

<log4net>

<appender name="LogFileAppender" type="log4net.Appender.FileAppender">
  <param name="File" value="c:\Log4NetExample.log"/>
  <layout type="log4net.Layout.PatternLayout">
    <param name="ConversionPattern" value="%d [%t] %-5p %c %m%n"/>
  </layout>
</appender>

<root>

  <level value="All"/>

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

一切正常..但我需要的是从代码移动代码web.config并从文本文件中读取它.

另外我需要2级调试和错误..

谁能帮我这个?

谢谢

c# asp.net logging log4net

9
推荐指数
1
解决办法
7624
查看次数

log4net和nunit测试,最基本的例子

我想尝试从我的应用程序中记录一些应用程序消息.在这种情况下,我只想强迫nunit使用log4net.我在http://www.ofconsulting.com/PublicPortal/ofc-tech-blog/92-configure-log4net-with-nunit.html找到了一些例子.

log4net在app.config中配置如下:

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

<log4net>
    <root>
      <level value="DEBUG" />
      <appender-ref ref="LogFileAppender" />
    </root>
    <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender" >
      <param name="File" value="log.txt" />
      <param name="AppendToFile" value="true" />
      <rollingStyle value="Size" />
      <maxSizeRollBackups value="10" />
      <maximumFileSize value="10MB" />
      <staticLogFileName value="true" />
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%-5p%d{yyyy-MM-dd hh:mm:ss} – %m%n" />
      </layout>
    </appender>
  </log4net>
Run Code Online (Sandbox Code Playgroud)

在我的测试代码中是如下

[TestFixture]
class DomainTests
{
    protected static readonly ILog log = LogManager.GetLogger(typeof(DomainTests));
    public void LoggingTests()
    {            
        log4net.Config.XmlConfigurator.Configure(); 
    }

    [Test]
    public void BasicLogTest()
    {
        log.Error("write my log …
Run Code Online (Sandbox Code Playgroud)

c# tdd log4net nunit

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