Log4net keepLo​​gFileNameExtension 不起作用

2024-03-28

这是我的 log4net 配置,滚动日志文件创建的扩展名错误。第一个文件使用 log_debug.txt 名称创建,滚动文件使用 log_debug.txt.1 创建。但理想情况下它应该是 log_debug.1.txt。

我使用preserveLogFileNameExtension值为true,但它似乎不起作用。您能检查一下,如果有什么问题请告诉我吗?

<appender name="DebugRollingFileAppender" type="log4net.Appender.RollingFileAppender,log4net">
    <filter type="log4net.Filter.LevelRangeFilter">
      <levelMin value="DEBUG" />
      <levelMax value="DEBUG" />
    </filter>
    <file value=".\logs\log_debug.txt" />
    <appendToFile value="true" />
    <rollingStyle value="Size" />
    <maxSizeRollBackups value="20" />
    <maximumFileSize value="2MB" />
    <preserveLogFileNameExtension value="true" />
    <staticLogFileName value="true" />
    <layout type="propertyPatternLayout">
      <conversionPattern value="%date || Thread=%thread" />
    </layout>
    <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
  </appender>

我的第一个答案(如下)基于 log4net v1.2.10,我被轻轻地催促到 v1.2.13 版本,该版本does包含preserveLogFileNameExtension。一些测试证实该属性也按预期工作,并且不依赖于staticLogFilename财产。

我认为 OP 使用的是 log4net 的早期版本,它不包含该属性,因此表现出下面描述的行为(IMO 上making3 和 Sivakumar 评论就在现场)

再次感谢您将我从 1.2.10 的困境中唤醒。


初步答复

首先第一件事:没有preserveLogFileNameExtension财产为RollingFileAppender(或任何附加程序)在 vanilla log4net 中(我正在查看版本 1.2.10.0)。大多数 log4net 组件将使用您发送给他们的任何属性配置而不会抱怨,但它不一定会转化为组件中的行为


当按大小(或复合)滚动时,会发生滚动被硬编码以在日志文件中添加迭代编号的后缀。您将始终得到一个“file.log.n”,其中 n 与下一个文件编号匹配(这取决于您的maxSizeRollBackups and countDirection值)。当前的情况无法避免这种情况RollingFileAppender(看看RollingFileAppender.RollOverRenameFiles method)

该怎么办?您可以决定按日期滚动。在这种情况下,可以使用datePattern财产。这datePattern滚动时附加到文件名,因此您可以使用类似的内容

<file value="file.log" />
<datePattern value=".yyyy-MM-dd-hh-mm-ss'.log'" />

这将保留扩展名并创建一个类似的文件file.log.2014-12-11-11-47-54.log(请参阅文件名中的原始 .log 扩展名)。但你正在失去尺寸限制。如果你选择 Composite,你也会遇到同样的问题;自从RollOverSize总是发生在RollOverDate将出现号码前缀。

您还可以决定使用您想要/需要的命名约定来推出(啊啊)您自己的附加程序。你甚至可以尝试从香草继承RollingFileAppender并且只覆盖必要的方法。AdjustFileBeforeAppend是虚拟的,是所有展期需求的起点;例如,您可以尝试将呼叫反转RollOverDate and RollOverSize使用复合模式...

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

Log4net keepLo​​gFileNameExtension 不起作用 的相关文章

  • Log4Net配置日志级别

    我该如何制作Log4net http logging apache org log4net index html只记录Info级别的日志 这可能吗 只能设置一个阈值吗 这就是我所拥有的 它按照我的预期记录了信息及以上内容 我能做些什么让它只
  • log4net的线程安全

    似乎有一些关于log4net是否线程安全的讨论 共识是框架是线程安全的 但appender不是 需要正确使用才能实现线程安全 有人可以对此进行一些说明 并可能给出以线程安全方式使用 RollingFileAppender 的示例吗 是否需要
  • 秋季创作者更新性能问题

    最近的 Windows 10 更新 秋季创意者更新 之后 我们的 NET c 4 0 应用程序的性能下降了很多 我认为存在各种问题 其中之一是 log4net 或磁盘 IO 我们的应用程序非常复杂 各种 WCF 应用程序和 ASPNET M
  • Log4net - 如何知道文件何时滚动?

    我有一个由 log4net 创建的日志文件 该文件每小时都会更改 有没有办法知道这个滚动何时发生 就像 log4net 库中的一个事件一样 我可以绑定到该事件 并在触发该事件时执行操作 我不是在寻找代码示例 只是想知道此事件是否存在 以及在
  • log4net 停止记录时如何接收事件

    Log4net 有点太擅长不抛出错误了 我正在尝试创建某种处理程序 如果 log4net 无法启动或死亡并且无法再记录 则会触发该处理程序 我知道应用程序设置键可以打开 log4net 的内部调试 log4net Internal Debu
  • 如何使用 log4net 记录 Trace 消息?

    我正在使用 log4net 将写入日志消息记录到滚动日志文件中 现在我还将重定向所有跟踪消息System Diagnostics Trace到该日志文件 我该如何配置呢 我试图在 log4net 文档中找到任何相关内容 但没有成功 有可能吗
  • 使用 Windows Azure DiagnosticsMonitor 时,log4net traceappender 仅记录级别为“详细”的消息

    我有一个天蓝色的辅助角色 我已将其配置为使用写入 WindowsAzure Diagnostics 的 log4net Trace Appender 这是通过在辅助角色的 RoleEntryPoint 中进行以下调用来完成的 using S
  • Log4Net 多个记录器

    首先 我在其他主题中看到了很多答案和提示 最相似的是 Log4Net 多个记录器 https stackoverflow com questions 3470272 log4net multiple loggers 3513417 3513
  • 在单独的线程上运行 Log4Net 附加程序

    目前 我有自己的日志系统 其中日志本质上是一个队列 有一个单独的线程侦听该队列并执行所有实际的写入操作 系统处理大量日志消息 文件在几分钟内很容易超过 10 MB 大小 因此在调用线程中进行实际日志记录是不可行的 如果 log4net 已经
  • Log4Net 部署时不记录日志

    我正在使用 log4net 来记录我的应用程序 这是一个 WPF 应用程序 日志记录在调试模式下运行良好 但不适用于我部署的版本 该应用程序安装在 C Program Files x86 MyApp 中 我使用 InnoSetup 创建安装
  • 如何使用 Log4Net 在日志文件中获取当前用户名而不是 AppPool 身份

    我们在 ASP NET MVC3 应用程序中使用 Log4Net 一切正常 但我们希望在日志文件中看到当前用户名而不是应用程序池的标识 这是我们正在使用的附加程序配置
  • Log4Net 不工作

    我正在 Windows XP 中以管理员用户身份使用 C 开发 NET Framework 3 5 并使用 log4net 进行 NET Framework 2 0 二进制引用 我曾尝试过log4net 缺少什么 未创建日志文件 https
  • log4net可以输出Json吗?

    我见过 log4net 的几个扩展 它们声称为日志文件创建 json 但格式永远不是有效的 json 这意味着集合不在数组中 也不是逗号分隔的 我使用它是错误的还是没有办法将 log4net 与 json 一起使用
  • 配置log4net根据日志级别写入不同的文件

    我正在设置 log4net 并希望在 debug log 中写入调试消息 在 info log 中写入信息消息等 为此 我使用了几个附加程序 例如
  • 如何使用 Windows 中的 log4net xml 配置器使用文件夹位置指定日志文件路径?

    在我的 app config 中我放入
  • 使用多个 log4net 文件记录器

    我有文件附加器 FileA FileB 和 FileC 我将 FileA 添加到根元素 因为我希望它成为一个包罗万象的元素 下面将详细介绍 我将 FileB 和 FileC 用于特定消息 并为每个附加程序创建命名记录器 在代码中 我加载用于
  • 你的 log4net 配置中有什么?黑客、优化、观察?

    这是我的 log4net 配置文件
  • Log4Net 在单独的配置文件中

    我需要为新项目配置 log4net 当我将所有信息保存在 App config 文件中时 一切都工作得很好 我想把log4net的配置放在一个单独的配置文件中 取App1 config 这是我的 app config 完美运行
  • Windows 10 Fall Creators Update (1709) 后,log4net 处理呼叫者位置信息变得非常慢

    我知道 log4net 的文档指出 记录调用者位置信息可能非常慢 除非软件的性能不受影响 否则不应使用 在 Windows 10 秋季创意者更新之前 情况都是如此 这是一个小示例项目 应用程序配置
  • 如何禁止在应用程序启动时创建空日志文件?

    我已经在我的应用程序中成功配置了 log4net 但有一件事对我来说有点烦人 即使没有发生错误 日志文件也会在我的应用程序启动后创建 空 我想仅在出现错误后才创建日志文件 我实际上在这个线程中找到了一种方法来做到这一点 http www l

随机推荐

  • 带有 firebase crashlytics 的 Hermes 包的反应本机源图

    我想从react native应用程序中读取crashlytics报告 但它在firebase控制台中根本不可读 Android 的崩溃示例如下所示 Non fatal Exception io invertase firebase cra
  • 使用 AST 解析器提取类实现的接口

    我正在使用 AST 解析器编译项目源代码 我可以通过什么方式提取类层次结构信息 即它是否正在实现任何接口或从另一个类扩展 您可以访问TypeDeclaration节点并从中获取类型绑定 ITypeBinding typeBind typDe
  • Scala,让我的循环更加实用

    我正在尝试减少像 Java 一样编写 Scala 2 8 的程度 这是我遇到的问题的简化 您能否对我的解决方案提出 更实用 的改进建议 变换地图 val inputMap mutable LinkedHashMap 1 gt a 2 gt
  • 在 Bash 中执行时间戳比较的最佳方法是什么

    我有一个警报脚本 我试图阻止它向我发送垃圾邮件 因此我想设置一个条件 如果在过去一小时内发送了警报 则不再发送警报 现在我有一个 cron 作业 每分钟检查一次条件 因为我需要在满足条件时快速收到警报 但我不需要每分钟都收到电子邮件 直到问
  • Spark - 是否可以控制分区到节点的放置?

    在 Spark 中 自定义Partitioner可以为 RDD 提供 通常 生成的分区会随机分配给一组工作人员 例如 如果我们有 20 个分区和 4 个工作线程 则每个工作线程将 大约 获得 5 个分区 然而 放置分区到工作节点 节点 看起
  • 将 ChartPanel 添加到 JPanel

    我这里有一些不起作用的代码 XYSeriesCollection dataset new XYSeriesCollection dataset addSeries series JFreeChart chart ChartFactory c
  • Angularjs:理解递归指令

    我在这里找到了一个很棒的树指令 原来的 http jsfiddle net n8dPm http jsfiddle net n8dPm 我一直试图通过其他几个问题来理解它的功能 1 https stackoverflow com quest
  • 如何在表单应用程序中获取参数?

    我可以找到许多有关如何在控制台应用程序中获取参数的示例 但我似乎找不到如何在 Windows 窗体应用程序中获取参数的示例 我想关注以下事情 每当我打开 jpg 文件时 Windows 都会启动我的应用程序 我想知道我的应用程序中 jpg
  • AWS Lambda 和 AWS API Gateway:如何发送二进制文件?

    我有一个 lambda 函数 它使用事件中的输入键从 s3 获取文件 并需要将其发送到客户端 我正在使用以下函数从 s3 获取文件 function getObject key var params Bucket my bucket Key
  • PouchDb.get(id,{attachments: true}) 在 Android 上不返回数据

    我正在使用 PouchDb 无复制 开发一个 Ionic 应用程序 我能够成功地存储带有附件的数据 为了检索数据 我使用下面的控制器片段来调用 angularjs 工厂中的 get 函数 pouchDbManager getData cur
  • 春云流兔的退避设置

    我仍在使用rabbitmq和spring云消息传递设置示例消息传递系统 但遇到了错误 或者我误解了文档 使用spring boot版本2 0 3 RELEASE 为了这个例子 我想要以下设置 spring cloud stream rabb
  • 如何将具有多个依赖项的 C 库编译到 Python 包中? Cmake?

    我在 python3 x 中有一个 Python 包 我一直在编写它 它与 C 库中的两个 C 函数交互 目前 我一直在使用ctypes我直接链接到共享库 so 然后使用 python 脚本与之交互 https docs python or
  • 为协作者使用 git 存储库的最佳方式是什么?

    一般来说 为协作者使用存储库的最佳方式是什么 我们应该只从主存储库中推送和拉取 还是为每个协作者创建一个分支 然后在适当的时候进行合并 如果这是一个愚蠢 基本的问题 我深表歉意 git noob 在这里 谢谢 Git 支持许多不同的工作流程
  • 无法将搜索栏拖动到滚动视图内

    如果这个问题在其他地方得到了回答 我深表歉意 我找不到任何有同样问题的人 我将 SeekBar 添加到位于嵌套 ScrollView 内的relativelayout 但是 我无法拖动搜索栏的拇指 我可以沿着其路径单击来更改其值 但无法拖动
  • 模板类的模板成员函数的类外定义的语法

    template
  • 无法计算表达式,因为代码已优化或本机框架位于调用堆栈顶部

    我正在开发一个网站 用户可以在该网站上提交一些信息 提交信息后 我尝试同时发送两封邮件 一封发送给我的销售团队 一封发送给我网站上的访问者 在发送邮件时 我在使用重定向到另一个页面时收到以下错误Response Redirect http
  • 在 Windows 10 中使用 PS 将程序(带参数)固定到任务栏

    我可以使用下面的代码将程序固定到 Windows 10 任务栏 感谢this https stackoverflow com questions 31720595 pin program to taskbar using ps in win
  • 在 SQLAlchemy 中使用 Postgres/PostGIS 视图

    两个问题 我想在我的 PostGIS DB 中生成一个视图 如何将此视图添加到我的 Geometry columns 表中 我必须做什么 才能将视图与 SQLAlchemy 一起使用 SQLAlchemy 的表和视图之间有区别吗 或者我可以
  • AuthenticationHeaderValue 与 NetworkCredential

    我正在尝试使用 HttpClient 为 HTTP Post 或 HTTP Get 编写客户端 当谷歌搜索时 我遇到了这些在 HttpClient 对象中设置这些身份验证的方法 一个使用 NetworkCredential 另一个使用 Au
  • Log4net keepLo​​gFileNameExtension 不起作用

    这是我的 log4net 配置 滚动日志文件创建的扩展名错误 第一个文件使用 log debug txt 名称创建 滚动文件使用 log debug txt 1 创建 但理想情况下它应该是 log debug 1 txt 我使用preser