问题标签 [log4net-appender]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
14674 浏览

c# - log4net RollingFileAppender 喷出大量日志,maxSizeRollBackups 没有效果

我拥有的一项服务突然喷出大量日志文件,并且没有限制写入的文件数量。这些日志(有点)命名为 MyService.2015-01-08.1、MyService.2015-01-08.2、MyService.2015-01-08.3 等,一直到目前的 218。我想将其限制为每天 10 个,而不是像现在这样无限。这是以前的日志配置:

我做了一些更改,如下所示。值得注意的是,我设置maxSizeRollBackups为 10,我认为这可以解决问题,但似乎并没有什么不同。

更改已部署,但它仍在创建新的日志文件,远远超过新设置的 10。

假设我的部署正确完成,可能有什么问题?我误解了我更改的配置属性,还是这里发生了其他事情?

谢谢大家!

0 投票
2 回答
990 浏览

logging - 配置 log4net RollingFileAppender 以滚动大小但附加日期时间?

我想配置我的 log4net 滚动日志附加程序,以便我的初始日志文件的名称是:-

log_{current_datetime}.log

当文件达到 25MB 大小时,应以相同的格式创建一个新的日志文件,并且不应重命名以前的日志文件。

如何在 log4net appender 上进行这样的设置?

0 投票
1 回答
855 浏览

c# - Windows 服务未登录到特殊文件夹下的日志文件

我创建了一个 Windows 服务,我希望 Windows 服务将信息记录到在我的用户配置文件下创建的日志文件中。我正在使用 common.logging,并且在配置中我指定了我的日志配置,如下所示。

但是 Windows 服务没有登录到在用户配置文件下创建的日志文件。服务在本地系统帐户下运行。我想在问题上取得领先。事件日志工作正常,只有文件附加程序不工作。

0 投票
1 回答
1491 浏览

c# - 使用 Log4net 在事件查看器中记录信息

我目前正在开发一个项目,我想使用 Log4net (EventViewerAppender) 在事件查看器中记录某些信息。使用ErrorFatal进行日志记录不会给我带来任何麻烦,但是当我尝试使用Info进行日志记录时,它不会出现。我检查了我的配置并查看了整个互联网,但我只能找到使用 FileAppender 记录信息的人。

我在我的配置文件中使用以下配置:

我不确定我在这里做错了什么,所以任何帮助都会有所帮助。

谢谢!-dckwlf

编辑

似乎我一直都在工作,但是在事件查看器中查看了错误的视图。

0 投票
2 回答
1577 浏览

c# - 使 log4net appender 有条件地在特定字段的属性之间进行选择

我有一个通用的日志项目,它使用 log4net 来记录日志事件。由于它是一个普通项目,它以非标准方式配置:几乎所有内容都是通过 C# 代码设置的。

现在,我以这种方式配置了一个 AdoNet 附加程序,其中包括记录触发日志事件的方法。它是作为日志初始化的一部分创建的,定义如下:

由于我绑定了 log4net%method属性,这将自动提取触发日志事件的方法名称,并将其发送到数据库中的一个名为的参数中,该参数@Method最终将插入到具有名为 .的列的数据库表中Method

但是,我正在添加一些新功能来全局处理异常并记录它们。当一个异常从任何地方冒泡到调用堆栈的顶部时,它将被传递给这个新的全局方法,以便记录它。我可以访问异常,所以我可以看到导致此异常的控制器和方法。我可以轻松地将其添加为 log4net 自定义属性(映射到类似的东西%property{ExceptionMethod})。我的问题是用我自己的自定义属性覆盖(或覆盖)log4net 的%method属性。

那么,如何让 log4net 有条件地在%method通过%property{ExceptionMethod}AdoNet 附加程序发送数据以在我的日志记录数据库表的“方法”列下记录此信息时进行选择?这甚至可行吗?

0 投票
1 回答
623 浏览

c# - 以编程方式配置 log4net 以写入单独的日志文件

我正在按照这个示例以编程方式配置 log4net。但是,由于我想分别记录信息和错误,所以我修改了设置方法如下

在我的代码中,我将其初始化如下

问题是我打印到 infoLog 的任何内容都会打印到 infolog.log 文件和 errorlog.log 文件,反之亦然。我的配置有什么问题?

0 投票
0 回答
1292 浏览

log4net - 通过 Log4Net 按进程 ID 和日期创建动态日志文件,无需重命名策略

我一直在 Stack 和网络上寻找针对我的特定用例的解决方案,但还没有找到。

使用 CastleCore 的 Log4Net 1.2.10 IIS 6.1 .NET 应用程序

我的要求是根据每小时的进程 ID 创建一个唯一的文件名,文件名中包含进程 ID、日期和小时。尽管如果进程 ID 在该小时内发生更改,则根据该进程 ID 和日期/小时创建一个新文件名。

我有一个在 IIS 的网络场上运行的服务,它有 4 个工作进程同时运行,2 个应用程序池每个池 2 个进程。所以4个日志文件也同时被写入。

我当前的配置(如下)似乎可以正常工作。文件被创建并同时记录,太棒了!日志记录非常繁重,因为在一个小时的过程中,每个进程 ID 将记录大约 200MB。

在一个小时的过程中,两个文件中的一个只是停止写入。我已经设置了最小锁和不同的进程 ID,这应该可以防止任何死锁、竞争条件或冲突。

我当前的配置如下

生成的日志格式为:IWSGServices[8977]-23.03.15.14.log

这就是我想要的,在上面的示例中,它是进程 ID 8977 的 1400 小时的日志。为每个正在使用的进程 ID 和新的小时戳生成 1500 个新日志。

当日志记录在 log4net 调试模式下停止时,我多次收到此错误:

我在 log4net 中没有发现任何类似的此错误案例,因此用例有限。我怀疑存在一些 I/O 问题或 log4net(至少是这个旧版本)无法满足我的用例。但是,我不相信最新版本也会如此。由于报告了更高版本和 Castle Core 实现的问题,我还没有升级 log4net。

设置 StaticLogFileName=true 会导致创建不带日期戳的文件名,即 WSGServices[8699],然后在每小时重命名为 IWSGServices[8977]-23.03.15.14.log。这不是我想要的,因为对于这个用例,我不希望文件被重命名,因为我有一个日志阅读器,它将它视为一个新文件并再次解析它。

我尝试了很多组合,包括有无锁定模型、滚动样式、日期模式,上面的配置似乎是我最接近的。如果我每分钟滚动一次,这个配置可能会起作用,但这会导致每天超过 3000 个日志文件,这是不切实际的。

我想在我正在使用的当前版本的 log4net 下实现这一点,但是如果我修补到 2.11,则会设置 PreserveLogFileNameExtension 参数,尽管文件仍会被重命名,但不会在扩展名之后。

我看到的一个建议是将 IIS 池设置禁用重叠回收设置为 false 但这没有任何区别,因为只会在应用程序池的回收中发挥作用。

另一种选择是将每个应用程序池中的两个进程都记录到单个日志文件中,尽管由于写入量的原因,我认为如果没有进一步的进程冲突,该解决方案将无法工作。

如果我遗漏了什么,或者如果有人在当前或更高版本的 log4net 中使用过它,任何帮助表示赞赏。

0 投票
3 回答
1007 浏览

c# - Adding date in filename of RollingFileAppender files

Hi I am now using log4net for some time. This is my Logger:

As you see, this Appender creates logfiles with maxsize 10K and it will also be rolled daily. This Configruation generates logfilenames as follows:

  • Log.log_2015-03-04,

  • Log.1.log_2015-03-04,

  • Log.2.log_2015-03-04,
  • Log.log_2015-03-03,
  • Log.1.log_2015-03-03,
  • Log.2.log_2015-03-03

BUT The today created logs look like this

  • Log.log,
  • Log.1.log,
  • Log.2.log

What I want is that filenames look like this : Log_yyyy-mm-dd_nr.log

So how do I change that?

0 投票
2 回答
787 浏览

c# - Log4net 有时会创建两份日志,一份为空

使用下面的配置,大约一半的时间,我每一个得到两个日志,一个是空的。它们的文件名相差一秒(log.2015-03-09_11-50-25 vs log.2015-03-09_11-50-26)

我试图每次运行控制台应用程序都有一个日志。

后一个日志是唯一填充/写入的日志。

为什么会这样?我如何解决它?

编辑:原来我在我的代码中实例化了第二个记录器。当实例化发生在另一秒时,会创建第二个日志。appender 工作正常。

0 投票
1 回答
927 浏览

.net - 在 log4net 中扩展 AsyncForwardingAppender

大家好,我正在尝试扩展AsyncForwardingAppender。我有以下配置文件:

现在在我的代码中,我已经覆盖了Append如下方法

Append正在追加到队列中。然后StartForwading通过一个函数从队列推送到 Splunk。

问题是:Append当我Log.Fatal("hhhh")从我的程序中执行类似操作时,没有被触发。创建此自定义附加程序时我缺少什么?