通过 XML 文件*和*代码配置 log4net 附加程序

2023-12-11

我今天开始使用 log4net,到目前为止,我真的很喜欢它。为了保留我们当前的日志记录功能,应用程序需要在应用程序启动时创建一个新的日志文件。日志文件名中包含编码的日期和时间戳。目前,我已经通过以下方式配置了 log4netXmlConfigurator,效果很好,除了我的文件名RollingFileAppender硬编码在配置 XML 文件中。

我想继续使用XmlConfigurator,但是调用后Configure(),我想到达RollingFileAppender并在代码中将其文件值更改为动态生成的字符串。例子在线文档现在似乎已经关闭,但我已经浏览了 SDK 参考,看起来我可以使用Heirarchy and GetAppenders()做我需要做的事情。我走在正确的轨道上吗?

好吧,我尝试了一下并尝试了以下代码,但它不起作用:

private static readonly ILog _log = LogManager.GetLogger(typeof(GUI));
// in the config file, I've set the filename to example.log, and it works
XmlConfigurator.Configure(new FileInfo("log_config.xml"));
Hierarchy hierarchy = LogManager.GetRepository() as Hierarchy;
if(hierarchy != null) {
    // get the appenders
    IAppender[] appenders = hierarchy.GetAppenders();
    // change the filename for the RollingFileAppender
    foreach( IAppender a in appenders) {
        RollingFileAppender rfa = a as RollingFileAppender;
        if(rfa == null)
            continue;
        rfa.File = "newfile.log"; // no runtime error, but doesn't work.
    }
}
_log.Info("Application started");

试试这个片段:

XmlConfigurator.Configure();

log4net.Repository.ILoggerRepository repo = LogManager.GetRepository();
foreach (log4net.Appender.IAppender appender in repo.GetAppenders())
{
if (appender.Name.CompareTo("RollingFileAppender") == 0 && appender is log4net.Appender.RollingFileAppender)
{
   var appndr = appender as log4net.Appender.RollingFileAppender;
   string logPath = "MyApplication.log";
   appndr.File = logPath;
   appndr.ActivateOptions();
}

我曾经发过类似的文章here

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过 XML 文件*和*代码配置 log4net 附加程序 的相关文章

  • log4net的线程安全

    似乎有一些关于log4net是否线程安全的讨论 共识是框架是线程安全的 但appender不是 需要正确使用才能实现线程安全 有人可以对此进行一些说明 并可能给出以线程安全方式使用 RollingFileAppender 的示例吗 是否需要
  • 如何通过log4j控制日志文件的每日滚动和最大文件大小?

    我想创建可以在第二天开始时滚动的日志文件 或者如果达到指定的文件大小 并且日志文件必须包含在日期文件夹内 文件夹的格式是YYYYMMDD 20111103 mylogfile log 是否可以通过 Log4j 来做到这一点而不实现自定义类
  • Teamcity 无法通过 nuget 安装软件包

    已解决 请参阅评论 我在 team city 有一个项目无法安装所需的软件包 这已经工作了一年多 但本周所有构建都开始失败 我的开发流程如下 我们使用github并使用Visual Studio进行本地开发 我们有一个 Windows te
  • log4net 每次运行一个文件

    我需要我的应用程序在每次运行时创建一个日志文件 我的首选格式是App log yyyy MM dd HH mm ss 如果那不可能 我会满足App log yyyy MM dd counter 这是我当前的附加程序配置
  • 在log4net的appender中设置日志名称

    我有 MyLogger 类 我在其中使用 log4net 如何修改我的附加程序以将日志保存在特定的日志名中 我想通过参数 logName 设置它 public void AddEntry string source string logNa
  • log4net 用于 IIS 中托管的 WCF 服务库

    对于一个项目 我有一个 WCF 服务库 目前非常简单 它通过 WCF 服务网站项目托管在 IIS 7 5 中 对于该 WCF 服务库 我需要 log4net 来记录一些重大事件 但启动并访问网站后 不会创建任何日志文件 这是我的配置详细信息
  • Log4j2的FailoverAppender错误:appender Failover没有与元素Failovers匹配的参数

    当我使用 log4j 2 1 编译 spring 3 2 9 Web 应用程序时 控制台中出现以下错误 2015 02 02 12 08 25 213 ERROR appender Failover has no parameter tha
  • log4net 日志正在创建但仍为空

    我正在尝试使用log4net http logging apache org log4net 当我启动应用程序时 它会创建日志文件 但无论我调用多少次Log Info Application Started 它仍然是空的 我研究了谷歌返回的
  • Log4Net 多个记录器

    首先 我在其他主题中看到了很多答案和提示 最相似的是 Log4Net 多个记录器 https stackoverflow com questions 3470272 log4net multiple loggers 3513417 3513
  • Orchard CMS 如何进行日志记录?

    我正在使用 Orchard CMS 它对我来说是更好的 CMS 我想了解它如何进行日志记录以及我是否可以添加自己的日志记录 我看到果园使用NullLogger类 它不起作用 我已打开 App Data Logs 文件夹并看到其中有日志文件
  • 在asp.net core 3.1中使用log4net和Microknights登录数据库不起作用

    我看过很多文章说 net core 不支持 AdoNetAppender 但我们可以使用 MicroKnights 来做同样的事情 我正在尝试使用相同的方法在 net core 3 1 应用程序中实现数据库日志记录 但仍然没有成功 我放置在
  • Log4Net 不工作

    我正在 Windows XP 中以管理员用户身份使用 C 开发 NET Framework 3 5 并使用 log4net 进行 NET Framework 2 0 二进制引用 我曾尝试过log4net 缺少什么 未创建日志文件 https
  • Log4Net 中 AdoNetAppender 中的缓冲区的惰性评估

    我正在使用 Log4Net 自定义属性将一些环境信息添加到我的日志中 我创建了一个具有全局可访问属性的实用程序类 我的程序类使用它来存储上下文信息 订单 id 用户 id 等 以及围绕它们的惰性包装器 因此我不需要一直更改 Log4Net
  • Log4Net 可用于 adoappender 的数据库字段 - 似乎还有更多,即 method_name?

    我最近创建了简单的 log4net 数据库表 用于通过 adonet 附加程序进行日志记录 并且它有效 但后来我注意到另一个网站使用额外的字段 看 哇 我很想知道在哪里可以获得可用字段名称的列表 例如 Method name 真的让我思考
  • 无法创建类型“Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter,Common.Logging.Log4Net”

    我在解决方案中有包含其他类库的 WCF 项目 我使用 nuget 包管理器为需要日志记录的项目添加了 Common Logging 我收到此错误 无法创建类型 Common Logging Log4Net Log4NetLoggerFact
  • C# 项目,编译器抱怨缺少对 log4net 的引用

    我正在使用 Visual Studio 2017 构建一个大型 C 项目 解决方案中有 200 多个项目 在编译其中一个项目时 我遇到了很多错误 如下所示 error CS0012 The type BufferingAppenderSke
  • Log4Net:使用 UTC 时间记录

    使用 log4net 1 2 11 0 w NET 如何让 RollingFileAppender 输出 UTC 日期 根据 Apache 的说法 它应该很简单
  • log4net 何时将日志写入或提交到文件?

    我们使用 log4net 来记录 winform 应用程序的事件和错误 我们的客户希望在应用程序运行期间检查日志文件 但我无法找出 log4net 何时以及如何执行写入 提交 操作 以及如何满足客户的要求 除了我自己创建另一个记录器 有什么
  • 使用 Loggly 时在 log4net 中指定应用程序名称

    我正在测试几个 ASP NET Web 应用程序 并使用 Log4net 的附加程序通过 Loggly 设置它们 现在 日志记录似乎没问题 但我似乎找不到一种方法 使用 log4 loggly 附加程序 来指定应用程序名称 以便当我在 Lo
  • 是否有用户友好的 Log4Net 日志文件查看器? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 是否有任何第三方工具可以识别 Log4Net 日志文件结构并通过提供搜索功能等以用户友好的方式显示它 Try 色域日志查看器 https source

随机推荐

  • IIS 6.0 中是否有相当于 Apache 的 auto_prepend_file 的功能

    在 LAMP 堆栈上我可以使用 gt php value auto prepend file bootstrap php 在 htaccess 中引导一系列我想在处理任何页面之前执行的命令 是否可以在 IIS 6 0 中执行相同的操作 更新
  • Java 正则表达式转大写

    所以我有一个像这样的字符串 2000cc 车辆翻新发动机 我想把它变成 2000CC 车辆翻新发动机 2000CC 上的大写字母为 cc 我显然做不到text replaceAll cc CC 因为它将用大写版本替换所有出现的 cc 因此单
  • 检测编译后的perl脚本是否动态加载模块

    我正在使用 Strawberry Perl 运行 Windows 10 我用PAR 打包机模块来制作我的一些 Perl 脚本的可执行版本 我发现有些模块例如XML LibXML 需要安装 Perl 才能运行可执行文件 由于我是为没有 Per
  • R范围:在没有本地环境的情况下强制函数中的变量替换

    我在循环中定义函数 并尝试强制评估循环变量 而不必携带私有环境 示例 一组函数handlers h1 handlers h2 handlers h6只是将 1 2 6 传递给另一个函数 如下所示 handlers lt list for i
  • 迭代器的默认值是多少?

    对于我正在使用的任何 STL 容器 如果我使用迭代器的默认构造函数声明一个迭代器 此特定容器类型 则迭代器将被初始化为什么 例如 我有 std list
  • 返回指向静态局部变量的指针安全吗?

    我正在处理一些广泛使用返回指向静态局部变量的指针的习惯用法的代码 例如 char const GetString static char sTest 5 strcpy sTest Test return sTest 我认为这是安全的 对吗
  • 快速删除 Unicode U+2018 左单引号,例如“Ali 到 Ali”

    如何从字符串中删除 Unicode U 2018 左单引号 古拉姆 阿里 阿里 凯尔 阿里 谢尔 阿拉卡达里 我想删除出现的 A 一个 你 字符串中的 u 分别为 A a U u I tried var myString Sozmah Qa
  • pyinstaller 无法执行脚本 pyi rth pkgres

    我有一个用 pyinstaller 制作的 exe 文件 当我尝试运行它时 它给了我这个错误 ModuleNotFoundError 没有名为 pkg resources py2 warn 的模块 50728 无法执行脚本 pyi rth
  • 使用 AIDL 处理跨进程错误的推荐方法 (Android)

    我有一个活页夹服务和一个位于不同进程中的客户端 使用 AIDL 当客户端调用我的远程 Binder 服务时 有时我需要将错误 异常 转发回客户端 然而 根据我的理解 这是不可能的 我尝试从活页夹服务中抛出 RemoteException 看
  • 使用大数组进行反向地理编码是最快的方法吗? - JavaScript 和性能

    我有很多观点Google Maps我想为每个点显示最近的城市 因此是反向地理编码 我有一个像这样的多维数组 citta vicine var comuni Abano Terme PD 45 3594 11 7894 Abbadia Cer
  • NetBeans功能如何关闭

    我已经安装了 NetBeans 15 他们默认打开了一个功能 我觉得这个功能非常分散注意力 我该如何关闭它 它是下图中突出显示的代码 这是不可编辑的额外文本 对我来说只是妨碍 先感谢您 感谢一位同事找到了答案 关闭下面的 显示内联提示
  • R 中不同颜色组合的堆积条形图

    我需要从表单的数据创建一个堆积条形图c a b a 和 b 由 c 标准化 使得 a 和 b 加起来为 1 我拥有的数据需要特定的格式 因此 a 和 b 需要是列表 下面是给定这些特定格式的最简单的可重现示例 A list 2 1 1 2
  • 是否需要构建 boost.signals2 库?

    我的系统在构建 boost 库时遇到问题 我知道大多数 boost 库 幸运的是 只是不需要构建的标头 有一些例外 是否需要构建 boost signals2 库 boost signals2 库也依赖于 boost signals 库吗
  • 使用 C 解析 URL 的最佳方法?

    我有一个像这样的网址 http 192 168 0 1 8080 servlet rece 我想解析 URL 来获取值 IP 192 168 0 1 Port 8080 page servlet rece 我怎么做 就我个人而言 我偷了HT
  • 除了在每次闭包之前克隆它之外,还有其他选择在多个闭包中共享 Arc 吗?

    我有这样的事情 use std sync Arc fn main let arc Arc new 42 move arc clone move arc clone 我正进入 状态 error E0382 capture of moved v
  • 如何实现标签系统

    我想知道实现标签系统的最佳方法是什么 就像 SO 上使用的那样 我正在考虑这个问题 但我无法想出一个好的可扩展解决方案 我正在考虑有一个基本的 3 表解决方案 有一个tags桌子 一个articles桌子和一个tag to articles
  • number_in_month 练习(SML 中多个列表的迭代)

    我在 SML 中有两个列表 假设列表 A a b c d e f 和列表B b e 我想计算 B 中每个项目与 A 中每个三元组的第二个元素匹配的次数 输出应该是 2 因为b and e每个在 A 中出现一次 到目前为止 这是我的代码 但是
  • Blogger 主题的下一个和上一个按钮

    这可能需要花费很多时间 并且可能是一个很难回答的问题 但请帮忙 我有一个博主博客 这是一个阅读日本漫画的博客 这个博客的主题实际上是在未完全开发的情况下发布的 我下载并应用了它 尽管我几乎完成了必要的地方的编码 但仍然遗漏了一些问题 其中一
  • 如何在不使用数据透视的情况下在 SQL 中将行转换或转置为列?

    我在 SQL 中转置数据时遇到一个问题 例如下面给出的表格 id source name value 1 cp x 1 cp y 1 hi a 2 li b 2 cp c 2 li d 3 li e 我需要以下格式的表格 转置但带有字符串聚
  • 通过 XML 文件*和*代码配置 log4net 附加程序

    我今天开始使用 log4net 到目前为止 我真的很喜欢它 为了保留我们当前的日志记录功能 应用程序需要在应用程序启动时创建一个新的日志文件 日志文件名中包含编码的日期和时间戳 目前 我已经通过以下方式配置了 log4netXmlConfi