标签: log4net-configuration

log4net:如何在数据库中存储数据

我打算用唯一的1替换几种不同的日志记录机制.另外我想将数据存储在文件中,而不是存储在DB中.

为此,我打算选择log4net.但是在文档上看,我没有看到将其配置为使用DB作为日志存储的方法.

我错过了什么吗?如果有办法使用log4net在数据库中存储数据,请指点我.怎么做?

非常感谢!

database logging log4net log4net-configuration

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

Log4net - 每次启动应用程序时创建新的日志文件

每次运行应用程序时,我们都可以创建单独的日志文件吗?如果我运行我的应用程序2次,我应该得到2个单独的日志文件,希望文件名可以附加创建的dateTime

例如:
log_0830 - 当应用程序在上午8:30运行时
log_2130 - 当应用程序在晚上9:30运行时

log4net log4net-configuration

7
推荐指数
1
解决办法
6293
查看次数

Quartz.Net - 使用log4net进行常规日志记录

我正在尝试实现Quartz.Net.只要没有配置日志记录一切正常(调试输出显示"找不到配置部分 - 抑制日志输出").

启用日志记录后,我将收到以下错误:无法从配置部分"common/logging"获取Common.Logging的配置.

内部异常:为common/logging创建配置节处理程序时发生错误:无法创建类型'Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter,Common.Logging.Log4net'

我用了几个资源,这其中以varify我的配置,但据我看到它应该是正确的.

我的app.config:

  <configSections>
    <section name="quartz" type="System.Configuration.NameValueSectionHandler, System, Version=1.0.5000.0,Culture=neutral, PublicKeyToken=b77a5c561934e089" />
    <sectionGroup name="common">
      <section name="logging" type="Common.Logging.ConfigurationSectionHandler, Common.Logging" />
    </sectionGroup>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
  </configSections>
  <common>
    <logging>
      <factoryAdapter type="Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter, Common.Logging.Log4net">
        <arg key="configType" value="INLINE" />
      </factoryAdapter>
    </logging>
  </common>  
  <log4net>
    <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%-6p%d{yyyy-MM-dd hh:mm:ss} – %m%n" />
      </layout>
    </appender>
    <root>
      <level value="DEBUG" />
      <appender-ref ref="ConsoleAppender" />
    </root>
  </log4net>
  <quartz>
    <add key="quartz.scheduler.instanceName" value="Driver.Service.Scheduler" />
    <add …
Run Code Online (Sandbox Code Playgroud)

c# log4net log4net-configuration common.logging quartz.net-2.0

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

Log4Net多个项目

我在我们的一个解决方案中使用log4net.该解决方案包含多个项目,每个项目都是一个Unit-Test项目.我使用中所描述的方法,这个帖子来记录添加到各种项目.

我正在使用滚动文件appender将所有测试记录到单个日志文件中,该文件根据大小进行翻转.

我的每个项目都成功登录到日志文件,但是,如果我从多个项目(多个测试程序集)运行测试,我只看到来自第一个程序集的日志记录.

例如,如果我从Project_A和运行测试Project_B,我只看到日志记录语句Project_A(假设Project_A's测试在测试运行中首先运行)

我已经检查过的事情:

  • 我已将每个项目中的配置文件作为链接包含在内

  • 我已经添加[assembly: log4net.Config.XmlConfigurator(ConfigFile = "Log4Net.config", Watch = true)]到每个项目的程序集文件中.

  • 我已经分别测试了每个项目,以确保它们在自己运行时成功记录.

c# log4net mstest visual-studio-2010 log4net-configuration

7
推荐指数
1
解决办法
7172
查看次数

log4net记录Debug.WriteLine和Console.WriteLine

由于这里的用户,我最近来到了log4net.无论如何,我想将每个Console.Write()和Debug.Write()自动记录到我配置的单个日志文件中.另外,我使用了许多类库,这些类也有对log4net一无所知的Console/Debug语句.这些也可以根据配置自动记录到日志文件中吗?这有可能吗?

我想要记录滚动日志文件:

Console.WriteLine("console statement");
Debug.WriteLine("debug statement");
Run Code Online (Sandbox Code Playgroud)

实例化记录器:

private static readonly ILog log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private static void InitializeLogger()
{
    XmlConfigurator.Configure();
}
Run Code Online (Sandbox Code Playgroud)

整个app.config:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
  </configSections>

  <log4net>
    <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">
      <param name="File" value="SubToolsPortServerTest.log"/>
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
      <appendToFile value="true" />
      <rollingStyle value="Size" />
      <maxSizeRollBackups value="2" />
      <maximumFileSize value="1MB" />
      <staticLogFileName value="true" />
      <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>
  </log4net>
</configuration>
Run Code Online (Sandbox Code Playgroud)

.net log4net log4net-configuration

7
推荐指数
1
解决办法
4915
查看次数

log4net - BufferingForwardingAppender - 刷新超时

我在某些时候有一连串的日志消息,所以我不得不BufferingForwardingAppender出于性能原因.但是,除了这种爆发(发生这种情况,一天一次),在剩下的一天中,我会收到少量的日志消息.问题是缓冲区大小设置为50,这对于突发时段是可以的,但对于没有突发的时段来说这太过分了.在此期间,刷新日志可能需要一两个多小时,这在此系统中是不可接受的.

有没有办法BufferingForwardingAppender在特定的时间间隔(例如每10分钟)进行刷新,如果缓冲区中没有足够的消息来触发通常的进程?

log4net log4net-configuration log4net-appender

7
推荐指数
2
解决办法
1290
查看次数

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

在单元测试中配置 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变量

我目前在application_start中进行了以下设置

log4net.Config.XmlConfigurator.Configure(new FileInfo(Server.MapPath("~/Web.config")));
Run Code Online (Sandbox Code Playgroud)

现在为了然后注销到log4net我需要向每个控制器添加一个实例;

public static readonly log4net.ILog logger = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
Run Code Online (Sandbox Code Playgroud)

因为这是我想在整个api中使用的东西.我可以在global.asax中声明这个,这样我就可以调用;

logger.Error( "输出");

什么时候需要?

c# log4net log4net-configuration

6
推荐指数
0
解决办法
683
查看次数

为什么使用 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
查看次数