Log4net 日志记录不适用于并行线程

2024-02-12

我在随机数上使用基本的 Parallel.Foreach 循环来使用 log4net 记录数字本身。

这是我在并行线程上记录 5000 条消息的代码

            Logger logger = new Logger();
            var numbers = Enumerable.Range(1, 5000);
            ParallelOptions parallelOptions =
                   new ParallelOptions()
                   {
                       MaxDegreeOfParallelism = Environment.ProcessorCount
                   };
            Parallel.ForEach(numbers, parallelOptions, number =>
            {
                logger.Write(Level.Info, "main method", "" + number + "", loggingParameters);
            });

但最终只在日志文件中看到1600条消息。

这是 log4net 的已知问题吗?或者我在这里做错了什么?

我在配置中使用了以下设置基于Answer https://stackoverflow.com/a/15119184/552236而且还是一样。

<param name="ImmediateFlush" value="true" />

<log4net debug="false">

    <appender name="GeneralRollingFileAppender" type="log4net.Appender.RollingFileAppender">
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
      <file   type="log4net.Util.PatternString" value="Logs/All/all_" />
      <appendToFile value="true" />
      <rollingStyle value="Date" />
      <datePattern value="yyyyMMdd'.log'" />
      <maxSizeRollBackups value="10" />
      <staticLogFileName value="false" />
      <param name="ImmediateFlush" value="true" />
      <filter type="log4net.Filter.LevelRangeFilter">
        <levelMin value="INFO" />
        <levelMax value="INFO" />
      </filter>
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %message%newline" />

      </layout>
    </appender>
    <root>
      <appender-ref ref="GeneralRollingFileAppender" />
    </root>
  </log4net>

Log4net版本:1.2.15.0


您正在写入 GlobalContext,我想您需要写入 ThreadLogicalContext 才能使其按您想要的方式工作。

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

Log4net 日志记录不适用于并行线程 的相关文章

  • 使用 gcc 在 Linux 上运行线程构建块 (Intel TBB)

    我正在尝试为线程构建块构建一些测试 不幸的是 我无法配置 tbb 库 链接器找不到库 tbb 我尝试在 bin 目录中运行脚本 但这没有帮助 我什至尝试将库文件移动到 usr local lib 但这又失败了 任何的意见都将会有帮助 确定您
  • 删除文件的最后 10 个字符

    我想删除文件的最后 10 个字符 说一个字符串 hello i am a c learner 是文件内的数据 我只是希望该文件是 hello i am a 文件的最后 10 个字符 即字符串 c learner 应在文件内消除 解决方案 将
  • C# 异步等待澄清?

    我读了here http blog stephencleary com 2012 02 async and await html that 等待检查等待的看看它是否有already完全的 如果 可等待已经完成 那么该方法将继续 运行 同步
  • 在一个数据访问层中处理多个连接字符串

    我有一个有趣的困境 我目前有一个数据访问层 它必须与多个域一起使用 并且每个域都有多个数据库存储库 具体取决于所调用的存储过程 目前 我只需使用 SWITCH 语句来确定应用程序正在运行的计算机 并从 Web config 返回适当的连接字
  • 通过引用传递 [C++]、[Qt]

    我写了这样的东西 class Storage public Storage QString key const int value const void add item QString int private QMap
  • C++11 删除重写方法

    Preface 这是一个关于最佳实践的问题 涉及 C 11 中引入的删除运算符的新含义 当应用于覆盖继承父类的虚拟方法的子类时 背景 根据标准 引用的第一个用例是明确禁止调用某些类型的函数 否则转换将是隐式的 例如最新版本第 8 4 3 节
  • free 和 malloc 在 C 中如何工作?

    我试图弄清楚如果我尝试 从中间 释放指针会发生什么 例如 看下面的代码 char ptr char malloc 10 sizeof char for char i 0 i lt 10 i ptr i i 10 ptr ptr ptr pt
  • 传递给函数时多维数组的指针类型是什么? [复制]

    这个问题在这里已经有答案了 我在大学课堂上学习了 C 语言和指针 除了多维数组和指针之间的相似性之外 我认为我已经很好地掌握了这个概念 我认为由于所有数组 甚至多维 都存储在连续内存中 因此您可以安全地将其转换为int 假设给定的数组是in
  • 从经典 ASP 调用 .Net C# DLL 方法

    我正在开发一个经典的 asp 项目 该项目需要将字符串发送到 DLL DLL 会将其序列化并发送到 Zebra 热敏打印机 我已经构建了我的 DLL 并使用它注册了regasm其次是 代码库这使得 IIS 能够识别它 虽然我可以设置我的对象
  • C++ 多行字符串原始文字[重复]

    这个问题在这里已经有答案了 我们可以像这样定义一个多行字符串 const char text1 part 1 part 2 part 3 part 4 const char text2 part 1 part 2 part 3 part 4
  • 重载 (c)begin/(c)end

    我试图超载 c begin c end类的函数 以便能够调用 C 11 基于范围的 for 循环 它在大多数情况下都有效 但我无法理解和解决其中一个问题 for auto const point fProjectData gt getPoi
  • C# - 当代表执行异步任务时,我仍然需要 System.Threading 吗?

    由于我可以使用委托执行异步操作 我怀疑在我的应用程序中使用 System Threading 的机会很小 是否存在我无法避免 System Threading 的基本情况 只是我正处于学习阶段 例子 class Program public
  • 如何定义一个可结构化绑定的对象的概念?

    我想定义一个concept可以检测类型是否T can be 结构化绑定 or not template
  • x:将 ViewModel 方法绑定到 DataTemplate 内的事件

    我基本上问同样的问题这个人 https stackoverflow com questions 10752448 binding to viewmodels property from a template 但在较新的背景下x Bind V
  • C# 动态/expando 对象的深度/嵌套/递归合并

    我需要在 C 中 合并 2 个动态对象 我在 stackexchange 上找到的所有内容仅涵盖非递归合并 但我正在寻找能够进行递归或深度合并的东西 非常类似于jQuery 的 extend obj1 obj2 http api jquer
  • C 函数 time() 如何处理秒的小数部分?

    The time 函数将返回自 1970 年以来的秒数 我想知道它如何对返回的秒数进行舍入 例如 对于100 4s 它会返回100还是101 有明确的定义吗 ISO C标准没有说太多 它只说time 回报 该实现对当前日历时间的最佳近似 结
  • 有没有办法让 doxygen 自动处理未记录的 C 代码?

    通常它会忽略未记录的 C 文件 但我想测试 Callgraph 功能 例如 您知道在不更改 C 文件的情况下解决此问题的方法吗 设置变量EXTRACT ALL YES在你的 Doxyfile 中
  • 相当于Linux中的导入库

    在 Windows C 中 当您想要链接 DLL 时 您必须提供导入库 但是在 GNU 构建系统中 当您想要链接 so 文件 相当于 dll 时 您就不需要链接 为什么是这样 是否有等效的 Windows 导入库 注意 我不会谈论在 Win
  • 为什么C++代码执行速度比java慢?

    我最近用 Java 编写了一个计算密集型算法 然后将其翻译为 C 令我惊讶的是 C 的执行速度要慢得多 我现在已经编写了一个更短的 Java 测试程序和一个相应的 C 程序 见下文 我的原始代码具有大量数组访问功能 测试代码也是如此 C 的
  • MySQL Connector C/C API - 使用特殊字符进行查询

    我是一个 C 程序 我有一个接受域名参数的函数 void db domains query char name 使用 mysql query 我测试数据库中是否存在域名 如果不是这种情况 我插入新域名 char query 400 spri

随机推荐

  • 即使表单没有焦点也拦截按键

    我构建了一个 winforms 应用程序 通过重写 ProcessCmdKey 方法来检查 CTR ALT S 和 CTRL ALT E 按键 这很好用 但如果屏幕保护程序继续运行然后关闭 则表单不会获得焦点 并且按键不会被拦截 即使表单没
  • 如何在 Nuxt 3 中添加脚本块到头部?

    我只是想添加一个script块在head tag Example 我花了几个小时来找出解决方案 解决像这样简单的问题 关于添加有很多答案inline脚本 但没有脚本block for Nuxt 3 我们怎样才能做到这一点Nuxt 3 好吧
  • 在同一个for循环中遍历django模板中的多个列表

    我想在同一个 for 循环中遍历 django 模板中的多个列表 我该怎么做 一些想法链接到这里 for item1 item2 item3 in list1 list2 list3 item1 item2 item3 endfor 这样的
  • 使用scikit-learn(sklearn),如何处理线性回归的缺失数据?

    我尝试了这个 但无法让它适用于我的数据 使用 Scikit Learn 对时间序列 pandas 数据框进行线性回归 https stackoverflow com questions 29748717 use scikit learn t
  • Facebook 聊天 API - php

    我已经成功通过 xmpp 协议登录 Facebook 我使用了 facebook 文档中提供的 PHP 代码
  • 自定义ipython笔记本的欢迎页面

    我可以自定义 iPython 笔记本服务器 版本 2 3 的登录页面吗 我的意思是 在起始页 类似于 http localhost 8888 tree 我想显示欢迎来到 John Doe 的 i Py 笔记本或修改现有横幅 这可能吗 您可以
  • Mac OS X /bin/bash:python:在某些 IDE 中找不到命令

    当我编译的时候test py 一个非常简单的Python文件 在Sublime Text或CodeRunner中 我收到错误 bin bash python command not found 然后我输入python test py在终端应
  • Swing Worker 模态对话框不会关闭

    我有一个 SwingWorker 线程 它启动一个模式对话框 从侦听启动的 StateValue 的属性更改侦听器 并且 swing 工作线程继续执行其工作 但是 看起来 did 方法没有被调用 因为它是在 EDT 上调用的 但 swing
  • Numpy 数组到 TFrecord

    我正在尝试通过张量流对象检测 API 训练自定义数据集 数据集包含 40k 训练图像和标签 采用 numpy ndarray 格式 uint8 训练数据集形状 2 40000 23456 和标签形状 1 0 3 我想为此数据集生成 tfre
  • 如何升级pip3?

    I want to use python3 5 for development but many times when I install the module for python 3 5 it always fails The term
  • 派生类型中的可变长度数组

    我主要使用 Python 进行科学编程 并没有大量的 Fortran 90 95 经验 对于我的一个项目 我想定义一个派生类型并为该类型重载一堆运算符 至关重要的是 我希望派生类型的变量之一成为可变长度的数组 至少 我在代码的不同部分需要两
  • 删除 tar 生成的尾随空字符

    我正在尝试压缩一些文件并通过 php passthru 命令将它们传递给用户 问题是 尽管 tar 文件应该只有 2k 大小 但它始终是 10240 有趣的数字对吗 所以我把它分解为 sh 4 1 tar czf test wc c 102
  • iPhone 上针对 RTL 语言的翻转布局

    这是我的问题 我已将我的应用程序本地化为阿拉伯语 它实际上与常规本地化略有不同 因为我有不同的目标 每种语言一个 在模拟器上 由于自动布局和约束的前导 尾随部分 视图被正确翻转 但我似乎无法在设备上获得相同的结果 AutoLayout RT
  • bash 创建带有序列号的目录

    我正在创建一个在 OS X 上运行的脚本 该脚本将由新手用户经常运行 因此希望通过每次创建一个新的目录结构并在最后一个上使用 n 1 来保护目录结构 target001下一次运行创建target002 到目前为止我有 lastDir fin
  • 重置按钮处理点击后执行 Javascript 操作

    如何立即执行某项操作after an
  • EF Core 查询存储过程映射到类型

    我有一个项目需要查询数据库并将结果返回到 Web api 有几个由数据库管理员即时创建的存储过程 它们有一个 UI 用于创建存储过程的定义及其名称 而 Web API 服务仅调用该 SP 并应返回结果 根据下面的代码 我无法将返回对象获取到
  • 我在 for 循环中使用 let 关键字给出了语法错误:意外的标识符

    我在 for 循环中使用 let 关键字 如下所示 for let methd1 in servUrl let methd methd1 for let pth1 in servUrl methd let pth pth1 app meth
  • 有没有办法使用 cron 重新启动 pm2 进程,但前提是它尚未运行?

    我想通过 PM2 重新启动我的 Node Js 应用程序 pm2 restart app js 使用 crontab 但仅当应用程序尚未运行时 例如 如果我的服务器崩溃并重新启动并且 pm2 没有重新启动 即使它正在运行 上面的命令也会重新
  • TensorFlow的map_fn仅在CPU上运行

    我在尝试获取 TensorFlow 时遇到了一个奇怪的问题map fn在我的 GPU 上运行 这是一个最小的损坏示例 import numpy as np import tensorflow as tf with tf Session as
  • Log4net 日志记录不适用于并行线程

    我在随机数上使用基本的 Parallel Foreach 循环来使用 log4net 记录数字本身 这是我在并行线程上记录 5000 条消息的代码 Logger logger new Logger var numbers Enumerabl