标签: log4net-configuration

log4net多个appender,写入事件查看器

我使用log4net进行日志记录,我有两个appender一个文件和其他eventlog appender.我已在注册表编辑器中注册应用程序,问题是现在两个记录器都在事件查看器中编写.我需要fileAppender写入文件并eventLogAppender在事件查看器中显示.

<log4net>
<appender name="LogFileAppender" type="log4net.Appender.FileAppender">
  <file value="file.log"/>
  <appendToFile value="false"/>
  <layout type="log4net.Layout.PatternLayout">
    <header value="Logging Start &#xD;&#xA;"/>
    <footer value="Logging End &#xD;&#xA;"/>
    <conversionPattern value="%date [%thread] %-5level %logger: %message%newline"/>
  </layout>
</appender>

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

  <param name="ApplicationName" value="eventlog" />
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
  </layout>
</appender>

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

然后在代码中

private static readonly ILog log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
// private static readonly ILog log = LogManager.GetLogger("LogFileAppender");
private static readonly …
Run Code Online (Sandbox Code Playgroud)

c# log4net log4net-configuration log4net-appender

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

在运行时期间更改日志文件的名称几次

是否可以在应用程序运行时更改fileappender的日志文件名称?它将每天完成几次.

我将尝试更多地阐述自己:我的应用程序在设备上写入固件.用户已经处理过的所有设备都在网格中.用户可以启动新的写入向导,也可以在已启动的设备上恢复或重新启动操作.我想要做的是记录用户为某个设备执行的所有步骤.

例如:当用户在设备AB0124上工作时,我想写一个名为AB0124.log的日志文件.当他结束在该设备上工作并在设备XY5618上启动时,我想在XY5618.log中记录这些操作

我已经读过可以使用context-property(这里这里以及很多其他帖子),但你必须在创建记录器之前设置属性.因此,我不是在类中创建一个记录器,而是在设置属性后在我的方法中创建一个.但到目前为止,没有任何记录.

当我在配置中设置硬编码的文件名时,它正在工作.我在这里错过了吗?

Log4Net.config:

<appender name="StepsLogAppender" type="log4net.Appender.FileAppender">
  <filter  type="log4net.Filter.LevelMatchFilter">
    <levelToMatch value="INFO"/>
  </filter>
  <filter type="log4net.Filter.DenyAllFilter" />
  <file type="log4net.Util.PatternString" value="%property{LogPathModifier}" />
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%date{dd/MM/yyyy  -  HH:mm:ss} - %message%newline" />
  </layout>
</appender>

<root>
  <level value="ALL" />
  <appender-ref ref="StepsLogAppender" />
</root>
Run Code Online (Sandbox Code Playgroud)

C#:

public void WriteStepInfo(string device, int step)
{
    log4net.ThreadContext.Properties["LogPathModifier"] = string.Format("D:\\StepsDevice_{0}.txt", device);
    var log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
    log.Info(string.Format("Device {0} - step {1}.", device, step));
}
Run Code Online (Sandbox Code Playgroud)

AssemblyInfo.cs中:

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

log4net log4net-configuration log4net-appender

6
推荐指数
1
解决办法
5091
查看次数

在单元测试中配置 log4net 以登录到控制台并显示正确的日期和时间

我正在运行一些单元测试,我希望 log4net 将所有内容都记录到控制台(仅供检查)。按照手册,我使用了:

BasicConfigurator.Configure();
Run Code Online (Sandbox Code Playgroud)

但是,这会将日志记录模式设置为%-4timestamp [%thread] %-5level %logger %ndc - %message%newline。如何更改它,以便获得通常的日期和时间(最多毫秒)而不是时间戳?

.net c# log4net log4net-configuration

6
推荐指数
1
解决办法
4426
查看次数

为什么使用 log4net 和 ASMX Web 服务每天会收到两个日志文件?

我有一个运行 IIS 10 的 ASMX Web 服务,并使用以下配置将 log4net 添加到项目中:

<appender name="AsmxDebugLogFile" type="log4net.Appender.RollingFileAppender">
  <file value="App_Data/ASMX.DEBUG_" type="log4net.Util.PatternString" />
  <appendToFile value="true" />
  <rollingStyle value="Composite" />
  <datePattern value="yyyy-MM-dd'.log'" />
  <maximumFileSize value="5GB" />
  <staticLogFileName value="false" />
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
  </layout>
</appender>
<logger name="AsmxDebugLogFile">
  <level value="DEBUG" />
  <appender-ref ref="AsmxDebugLogFile" />
</logger>
Run Code Online (Sandbox Code Playgroud)

但由于某种原因,我每天都会收到两个日志文件,格式yyyy-MM-dd.log.yyyy-MM-dd.log如下图所示,似乎也是随机的,日志文件将切换到新创建的日志文件,然后再次开始记录日志文件中的 at 是在相关日期的午夜创建的。所有日志文件也远低于 5GB 最大文件大小。

每天两个 log4net 日志文件

以下是更新的日志文件列表

在此输入图像描述

似乎最初,log4net 记录到文件 yyyy-MM-dd.log,然后在随机的时间后创建一个新的日志文件yyyy-MM-dd.log.yyyy-MM-dd.log开始写入该日志文件,然后返回并记录到yyyy-MM-dd.log开始时创建的日志文件当日。

这些是 IIS 回收设置

IIS 设置

我每天需要 1 个格式为 ASMX.DEBUG_yyyy-MM-dd.log 的日志文件。我这个配置哪里出错了?

更新

看来是因为我们每 60 分钟回收一次应用程序池,具体取决于此时是否正在写入日志文件,取决于是否创建了新的日志文件。关于如何克服这个问题的任何建议。目前我已经在日志文件名中添加了 process_id …

c# iis log4net asmx log4net-configuration

6
推荐指数
1
解决办法
1029
查看次数

日志文件没有创建?

我正在使用log4net并使用param name ="File"value ="C:\ Application.log"完全设置它.但是文件不是用C:创建的.我正在运行Windows 7,也许像权限这样的东西阻止了文件的创建.

这是app.config:

<?xml version="1.0" encoding="utf-8" ?>  
<configuration>  
  <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="C:\Users\Mohit\Documents\Application.log" />  
      <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>  
</configuration>
Run Code Online (Sandbox Code Playgroud)

c# logging log4net log4net-configuration

5
推荐指数
1
解决办法
6156
查看次数

如何阻止log4net写入两个单独的文件

我正在使用以下log4net配置.我正在尝试将性能日志写入单独的文件,但输出将转到这两个文件.即使我正在指定:

private static readonly log4net.ILog log = log4net.LogManager.GetLogger("PerformanceMetricsLogger");
Run Code Online (Sandbox Code Playgroud)

在这种情况下,如何阻止log4net写入默认的appender?

<log4net>
  <!-- Define some output appenders -->
  <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">    
    <file type="log4net.Util.PatternString" value="c:\ilap\IlapAdServerLog_%property{log4net:HostName}.txt" />
    <appendToFile value="true" />
    <rollingStyle value="Size" />
    <maxSizeRollBackups value="-1" />
    <maximumFileSize value="2000KB" />
    <staticLogFileName value="true" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
    </layout>
  </appender>

  <appender name="RollingFileAppenderForPerformance" type="log4net.Appender.RollingFileAppender">
    <file type="log4net.Util.PatternString" value="c:\ilap\IlapAdServerLog_%property{log4net:HostName}.peformance.log" />
    <appendToFile value="true" />
    <rollingStyle value="Size" />
    <maxSizeRollBackups value="-1" />
    <maximumFileSize value="2000KB" />
    <staticLogFileName value="true" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date [%thread] %-5level %logger …
Run Code Online (Sandbox Code Playgroud)

.net log4net log4net-configuration

5
推荐指数
1
解决办法
1554
查看次数

如何从app.config告诉log4net使用哪个appender

我有一个快速的log4net问题.如何从app.Config中指定要使用的appender?此特定配置文件引用2个不同的appender.两者都是滚动文件追加器,但它们指向不同的文件.在整个应用程序中,正在调用log4net并将类型传递给构造函数.像这样...

 private static readonly ILog log = LogManager.GetLogger(typeof(Foo));
Run Code Online (Sandbox Code Playgroud)

log4net如何知道选择哪个appender?您可以将类型映射到特定的命名appender吗?我知道GetLogger有5个构造函数,你能传递一个类型和一个appender名称吗?我看到"repositoryName",不知道那是什么.如果有人能指出我正确的方向,我会非常感激.我想要一组特定的类型来专门记录到一个appender.

感谢任何提示,
〜在圣地亚哥

c# logging log4net log4net-configuration

5
推荐指数
1
解决办法
4511
查看次数

log4net-自定义属性记录

我使用以下类使用log4net打印出消息:

public class Message
{
    public String Text { get; set; }
    public int Id { get; set; }
    public override string ToString()
    {
        return Text;
    }
}
Run Code Online (Sandbox Code Playgroud)

我使用Logger.Info(MessageInstance),因此log4net只是调用该ToString方法并打印出消息。我也想记录Id消息对象的属性,但是我不知道该如何实现。

我的转换模式与此类似:

<conversionPattern value="%date %-5level %message%newline" />
Run Code Online (Sandbox Code Playgroud)

我尝试添加,%message{Id}但这只会将整个消息打印两次。

有什么建议么?

c# log4net log4net-configuration

5
推荐指数
1
解决办法
3786
查看次数

如何在创建日志文件之前初始化log4net?

我想设置日志文件的完整路径和文件名(我使用log4net),我想使用c:\​​ ProgramData\Logs文件夹.我使用环境变量#PROGRAMDATA#获取ProgramData文件夹的路径.

我想以下一种方式设置日志文件的路径:我在App.config中使用一个属性,并在我执行日志记录的类中设置此属性的值.

我的App.config文件:

<configuration>
...
    <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="AppRollingFile" type="log4net.Appender.RollingFileAppender">
          <file type="log4net.Util.PatternString" value="%property{ProgramDataPath}\Logs\Application.log" />
          <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
            <appendToFile value="true" />
            <maximumFileSize value="1000KB" />
            <maxSizeRollBackups value="5" />

            <layout type="log4net.Layout.PatternLayout">
                <conversionPattern value="[%-5level][%d{yy-MM-dd HH:mm:ss,fff}] %m%n" />
            </layout>
        </appender>
        <root>
            <level value="DEBUG" />
            <appender-ref ref="Console" />
            <appender-ref ref="AppRollingFile" />
        </root>
    </log4net>
</configuration>
Run Code Online (Sandbox Code Playgroud)

以及我设置属性的代码:

static void Main(string[] args)
{ …
Run Code Online (Sandbox Code Playgroud)

c# log4net log4net-configuration

5
推荐指数
1
解决办法
9234
查看次数

如何在log4net中以编程方式更改日志文件路径?

我使用%property%来设置Log4Net配置文件中的输出文件路径.每次应用程序启动时,都会在APP数据文件夹中创建一个日志文件.我正在使用Composite滚动样式来滚动文件.

但现在我的要求是根据应用程序中的一些用户交互滚动/更改文件路径.我怎样才能实现这一目标,任何人都可以建议我实现这一目标.

  1. 如何在c#代码中滚动文件.预期行为类似于基于大小和日期的滚动.
  2. 在程序执行期间,在Log4Net更改输出文件路径c#代码是什么?

如果我的要求不明确,请告诉我.

谢谢.

.net c# logging log4net log4net-configuration

5
推荐指数
1
解决办法
2227
查看次数

标签 统计

log4net ×10

log4net-configuration ×10

c# ×8

.net ×3

logging ×3

log4net-appender ×2

asmx ×1

iis ×1