Tag: 日志记录

log4net配置 – 找不到部分

这是我的错误消息: log4net:ERROR XmlConfigurator: Failed to find configuration section ‘log4net’ in the application’s .config file. Check your .config file for the and elements. The configuration section should look like: 这是我的web.config: … … … 我的配置有什么问题? 更新: 还有Web.Release.config: … … … Web.Test.cofig – 与第一版相同 和Web.Debug.config,这是空的:

如何跨类使用TraceSource

我最近在研究TraceSource的文档。 Microsift说TraceSource是一种新的方式,应该使用而不是旧的Trace类。 // create single TraceSource instance to be used for logging static TraceSource ts = new TraceSource(“TraceTest”); // somewhere in the code ts.TraceEvent(TraceEventType.Warning, 2, “File Test not found”); 现在我的问题。 你有大型项目,有几个程序集,你有很多类。 假设您想跟踪跨类传播的特定function。 明显的想法是你需要创建一个特定的TraceSource。 1)要使用Tracesource,我需要先创建实例。 什么是MS考虑跨各种类或程序集共享此实例? 我应该创建一个具有静态单例属性的虚拟类吗? 在那种情况下你在做什么 2)为什么我需要TraceSource实例? 配置文件中描述了每个属性。 基于Trace类的旧逻辑不需要某些实例,只提供了使用静态方法的方法。

在NLog中运行时添加/删除日志文件

我正在写一个小文件转换实用程序。 文件在放入目录时会自动转换。 我正在使用NLog进行日志记录。 除了使用NLog.conf配置的中央日志文件(并接收生成的所有消息)之外,我还想为每个输入文件创建一个额外的日志文件,它具有相似的名称并包含在转换过程中写入的所有日志消息。 不幸的是,我似乎无法在运行时找到如何在适当的规则下正确添加新文件目标。 我希望所有Logger对象在转换过程中写入新的日志文件。 我尝试过类似的东西 var logfile = new NLog.Targets.FileTarget(); logfile.FileName = fileName + “.log”; logfile.KeepFileOpen = true; logfile.Initialize(); var rule = new NLog.Config.LoggingRule(“*”, logfile); NLog.LogManager.Configuration.LoggingRules.Add(rule); NLog.LogManager.ReconfigExistingLoggers(); // // Proceed with converting file // logfile.Flush(); NLog.LogManager.Configuration.LoggingRules.Remove(rule); NLog.LogManager.ReconfigExistingLoggers(); 但是没有创建日志文件。 我错了什么? 任何的想法?

如何有效地异步登录?

我在我的一个项目中使用Enterprise Library 4进行日志记录(以及其他用途)。 我注意到我正在做的日志记录有一些成本,我可以通过在单独的线程上进行日志记录来减轻这种成本。 我现在这样做的方法是创建一个LogEntry对象,然后在调用Logger.Write的委托上调用BeginInvoke。 new Action(Logger.Write).BeginInvoke(le, null, null); 我真正想要做的是将日志消息添加到队列中,然后让一个线程将LogEntry实例从队列中拉出并执行日志操作。 这样做的好处是日志记录不会干扰执行操作,并且并非每个日志记录操作都会导致在线程池上抛出作业。 如何以线程安全的方式创建支持多个编写器和一个读取器的共享队列? 设计用于支持许多编写器(不会导致同步/阻塞)和单个读取器的队列实现的一些示例将非常受欢迎。 关于替代方法的建议也值得赞赏,但我对改变日志框架并不感兴趣。

Log4Net可以自动删除日志文件吗?

我在用C#编写的Windows服务程序中使用log4net RollingFileAppender。 日志目录中文件的数量和大小增长太快,需要清理。 配置如下: 我只想保留30天的日志。 如何配置log4net自动删除日志? 如果没有通过log4net提供,我会有什么解决方案? 先感谢您。

线程安全如何是NLog?

好, 我已经等了好几天才决定发布这个问题,因为我不知道如何说明这一点,重新进入一篇详细的post。 但是,我认为在这一点上要求社区提供帮助是相关的。 基本上,我尝试使用NLog为数百个线程配置记录器。 我认为这将非常简单,但我在几十秒后得到了这个exception:“ InvalidOperationException:Collection被修改;枚举操作可能无法执行 ” 这是代码。 //Launches threads that initiate loggers class ThreadManager { //(…) for (int i = 0; i<500; i++) { myWorker wk = new myWorker(); wk.RunWorkerAsync(); } internal class myWorker : : BackgroundWorker { protected override void OnDoWork(DoWorkEventArgs e) { // "Logging" is Not static – Just to eliminate this […]

记录每个单独线程的单个日志文件

我有一个服务应用程序,它在启动时读取XML文件并为XML文件中的每个条目启动一个线程。 每个线程都创建一个worker类的实例,该实例需要记录器将任何输出记录到特定于线程的日志文件中。 在服务app.config中,我将log4net配置设置设置为使用XML appender,并将文件指定为PatternString,如下所示: 在创建的worker类的每个实例的线程锁定方法中,我使用log4net.LogManager.GetLogger(“MyLogger”)方法获取记录器,然后使用ThreadContext.Properties[“LogName”] = “Log name prefix”设置当前线程PatternStrings LogName属性ThreadContext.Properties[“LogName”] = “Log name prefix” 。 所有文件都已创建,但是当调用记录器时,它只会将所有消息记录到一个看似随机的文件中。 我已经搜索了很长一段时间试图找到一个解决方案或一些我做错的答案,但我没有运气。 有谁知道为什么会这样?

我如何设置log4net每天将我的文件记录到不同的文件夹?

我想在每天将所有日志保存在名为YYYYMMdd的文件夹中 – log4net应根据系统日期时间处理创建新文件夹 – 我如何设置它? 我想在白天将所有日志保存到1MB的n个文件 – 我不想重写旧文件,但是要在一天内真正拥有所有日志 – 我如何设置它? 我是C# 关心亚历克斯