Tag: logging

如何在通用应用程序中禁用任务并行库的ETW事件源?

任务并行库使用Windows事件跟踪(ETW)进行日志记录。 显然,在Windows Phone或Windows Store .NET Runtime下,存在与TPL或ETW中的日志记录相关的错误。 这里描述了原始问题。 一种可能的解决方法是禁用TPL的ETW EventSource 。 如果我真的想要如何在通用Windows应用程序中禁用它 ? reflection适用于桌面应用程序,但不适用于WP / WinRT应用程序。 EventCommand.Disable未被识别为EventSource.SendCommand的有效命令(尽管它在ETW内部使用)。 这是要使用的代码(作为控制台应用程序): using System; using System.Threading.Tasks; using System.Diagnostics.Tracing; using System.Reflection; namespace ConsoleApplication { class Program { internal class MyEventListener : EventListener { protected override void OnEventSourceCreated(EventSource eventSource) { Console.WriteLine(eventSource); base.OnEventSourceCreated(eventSource); if (eventSource.Name == “System.Threading.Tasks.TplEventSource”) { Console.WriteLine(“enabled: ” + eventSource.IsEnabled()); // […]

如何使用Log4Net实现日志文件的自动存档

我想以这样的方式配置log4net,即所有前一天的日志都应该自动存档。 是否有可能在Log4Net中自动存档以前的日志。 我想使用配置而不使用任何第三方库(如sharplibzip)编写任何代码来创建存档。 通过归档添加的另一件事是指压缩zip / rar格式的文件以节省磁盘空间。

如何使用async / await方法管理类似NDC的log4net堆栈? (每个任务堆栈?)

在普通/同步/单线程控制台应用程序中,NDC.Push可以很好地管理“当前项目”(可能在多个嵌套级别,但对于此示例仅为1级)。 例如: private static ILog s_logger = LogManager.GetLogger(“Program”); static void Main(string[] args) { BasicConfigurator.Configure(); DoSomeWork(“chunk 1”); DoSomeWork(“chunk 2”); DoSomeWork(“chunk 3”); } static void DoSomeWork(string chunkName) { using (NDC.Push(chunkName)) { s_logger.Info(“Starting to do work”); Thread.Sleep(5000); s_logger.Info(“Finishing work”); } } 这将导致期望日志输出,显示“程序”右侧的“块X”NDC条目(基本配置器的默认模式) 232 [9] INFO程序块1 – 开始工作 5279 [9] INFO计划块1 – 完成工作 5279 [9] INFO程序块2 – 开始工作 10292 […]

从外部配置文件设置的log4net不起作用

我对log4net有一个奇怪的问题。 在ASP.NET应用程序中,我想在外部配置log4net,因此我有一个单独的log4net.config文件,我在属于我的Web应用程序的AssemblyInfo.cs文件中使用此行连接到我的Web应用程序: [assembly: log4net.Config.XmlConfigurator(ConfigFile = “Log4Net.config”, Watch = true)] 现在,如果我以这样的常规方式实例化log4net logger类: public class MyClass { private static readonly ILog _logger = log4net.LogManager.GetLogger(typeof(MyClass)); …. 然后这工作,并且日志记录正常工作。 但是,我将日志代码包装在LogManager类中,该类是单独程序集(Infrastructure)的一部分,并在多个项目中重用。 它有一个GetLogger,如下所示: public static class LogManager { public static ILog GetLogger() { var stack = new StackTrace(); var frame = stack.GetFrame(1); return new log4net.LogManager.GetLogger(frame.GetMethod().DeclaringType); } } 所以我可以在我的asp.net代码中使用它: public class MyClass { […]

订阅Windows事件日志?

我正在开发一个项目,需要经常检查某些事件的Windows事件日志。 我在想: Is there a way to create a subscription of the Windows Event Log for certain event? 那么,当事件发生时(即事件id = 00001),我可以尽快在代码中获得通知? 我正在使用c#。 如果无法做到这一点,那么我将不得不继续搜索效率不高的事件日志。 谢谢

是否可以在C#/ .Net中将消息记录到cmd.exe?

是否可以将消息从WinForms应用程序记录到cmd.exe进程以编程方式启动? 我尝试过以下代码的各种变体: private void button1_Click(object sender, EventArgs e) { Log(“Button has been pressed”); } private void Log(string message) { var process = Process.Start(new ProcessStartInfo(“cmd.exe”, @”/K “”more”””) { UseShellExecute = false, RedirectStandardInput = true, }); process.StandardInput.WriteLine(message); } 不幸的是,控制台窗口闪烁半秒钟就是这样。 请不要回答我真正想做的事情,因为现在我只是好奇,如果可能的话:)

Nlog自定义layoutrenderer

任何人都可以为我提供一个非常样本的自定义layoutrenderer用于nlog? 举例来说,我希望在im log中进行缩进 如果我从方法C调用方法B 文本日志文件如下所示: Inside Method C Inside Method B 等等。

如何使用NLog登录多个目标?

我正在使用NLog,我想同时登录RichTextBox和File。 我想以编程方式配置Logger,而不是使用xml配置文件。 以下代码仅记录到最后一个目标(在本例中为File)。 有人可以帮忙吗? RichTextBoxTarget t1 = new RichTextBoxTarget(); t1.Layout = “${date} ${message}”; t1.ControlName = “rtb_log”; t1.FormName = “MainForm”; NLog.Config.SimpleConfigurator.ConfigureForTargetLogging(t1, LogLevel.Debug); FileTarget t2 = new FileTarget(); t2.Layout = “${date} ${level} ${message}”; t2.FileName = “${basedir}/Logs/today.log”; t2.KeepFileOpen = false; t2.Encoding = “iso-8859-2”; NLog.Config.SimpleConfigurator.ConfigureForTargetLogging(t2, LogLevel.Trace); Logger logger = LogManager.GetLogger(“MyLogger”);

如何关闭ASP.NET核心框架完成的日志记录

如何为每个请求关闭ASP.NET完成的日志记录,例如: INFO 09:38:41用户个人资料可用。 使用’C:\ Users \ xxxx xxxx \ AppData \ Local \ ASP.NET \ DataProtection-Keys’作为密钥存储库,使用Windows DPAPI加密静态密钥。 DEBUG 09:38:41主持开始 DEBUG 09:38:41主持人开始了 INFO 09:38:41请求启动HTTP / 1.1 GET http:// localhost:23369 / INFO 09:38:41请求启动HTTP / 1.1 DEBUG http:// localhost:23369 / text / html DEBUG 09:38:41不支持DEBUG请求 DEBUG 09:38:41请求路径/与支持的文件类型不匹配 DEBUG 09:38:41请求成功匹配路线名称’default’和模板'{controller = Home} / {action = Index} / {id?}’。 DEBUG […]

如何在c#中写日志文件?

我如何在c#中编写日志文件? 目前我有一个带有此语句的计时器,每20秒计时一次: File.WriteAllText(filePath+”log.txt”, log); 对于我想要记录的所有内容,我这样做: log += “stringToBeLogged”; 您可以假设字符串日志随着程序的运行而增长和增长。 (我甚至不知道每个字符串是否有最大字符数?) 我认为必须有更好的方法来做到这一点。 我只是觉得每次将某些内容添加到日志中时,反复写入整个文件会很重。