首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >powershell多线程log4net插入日志问题

powershell多线程log4net插入日志问题
EN

Stack Overflow用户
提问于 2015-08-18 18:40:54
回答 1查看 135关注 0票数 0

我有一个使用log4Net管理日志的PowerShell脚本。日志记录在日志文件和MS SQL数据库中。该脚本使用带有运行空间的多线程。

问题是多个线程同时管理多个对象并记录不同对象上的大量数据。我需要按对象对日志进行重新分组。一个例子将帮助我更好地解释自己!^^

代码语言:javascript
复制
log file line 1 OBJECT 1.ACTION 1
log file line 2 OBJECT 1.ACTION 2
log file line 3 OBJECT 1.ACTION 3
log file line 4 object2.action1
log file line 5 object3.action1
log file line 6 OBJECT 1.ACTION 4
log file line 7 object2.action2
log file line 8 OBJECT 1.ACTION 5
…

为了管理这个插入日志的问题,我计划在对象处理结束时登录内存,例如在一个表中;使用mutex阻塞其他线程,并使用foreach循环写入所有日志。

代码语言:javascript
复制
Main {
    Treat object {
    Action1 -> Logs +=log1
    Action2 -> Logs +=log2
    …
    }

    System.Threading.Mutex WaitOne()
    For each ($log in $Logs) {
        Write in log file
        Write in SQL DB
    }
    System.Threading.Mutex ReleaseMutex()
}

我想知道是否有更好的解决方案来管理多个运行空间的插入日志问题。

Log4Net也许可以在本地管理这一点;将所有日志存储在内存中,并仅在我键入命令时才“提交”写操作?或者其他一些不使用Mutex的解决方案?

EN

回答 1

Stack Overflow用户

发布于 2015-08-26 01:19:27

一种方法是每个组使用一个记录器,如果您事先不知道组的数量,可以只使用create the loggers dynamically

如果您更喜欢使用一个记录器,最佳实践通常是在事件发生时记录事件,然后进行分组,例如在显示日志时。在SQL语言中,只需为分组条件添加一列,或者对于文本文件,可以使用unix sort命令。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32070148

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档