ETW/Eventsource追踪到文件(转储)。
我使用ETW在应用程序中进行跟踪.因此,我创建了一个自定义EventSource和EventListener. 现在我想从客户端使用此跟踪.例如,我希望我的应用程序在应用程序获得异常时将跟踪日志转储到文件中,因此我将能够远程知道发生了什么(所以我想要跟踪转储). 问题1:ETW设计(dump)还是只是一个跟踪工具,我必须实现另一个不同的解决方案? 问题2 :(如果问题1 => etw可以做这样的事情)我该如何实现? 编辑:这是适用于Windows 10 Universal App. 解决方案 您无法使用UWP中的语义记录,因为它与UWP的.NET不兼容. 问题1:是(转储)的ETW设计还是只是一个跟踪 工具和我必须实现另一个不同的解决方案? 顾名思义的Windows(ETW)事件跟踪,用于事件跟踪.您可以在事件查看器中检查事件细节. 在获取转储的时间点,转储文件是应用程序的快照.它显示了正在执行的过程以及加载了哪些模块.它不仅限于事件跟踪.例如
2 2024-04-26
编程技术问答社区
防止log4net在代码中重命名日志文件后创建一个新的日志文件
我正在尝试重命名我的日志文件,以将其标记为特定值,以更容易的组织目的.例如,当应用程序启动时,将创建log_start.txt.用户访问应用程序中的某个模块后,日志文件应重命名为log_start_modulename.txt. 但是,Log4net不会重命名,而是创建一个名为log_start_modulename.txt的新文件,它使我拥有2个文件.另外,log_start.txt中的所有以前的logs in log_start_modulename.txt. 我已经尝试了一个解决方案其他人,但他们似乎最终都创建了一个新的日志文件而不是重命名. 这是我在app.config中的代码:
4 2024-04-26
编程技术问答社区
用于ASP.NET应用程序的单子紧凑式记录器
我已经编码了Singeton紧凑型记录器,这对于ASP.NET应用程序非常方便.只需重新定位它,然后Logger.Log.Info("Hello world!");即可.它还自动登录未经手的异常. 有时我会在尝试创建日志文件Stream的地方会出现错误. 例外是: 该过程无法访问文件'c:\ inetpub \ wwwroot \ myapp \ logs \ 5-22-2011.log',因为它是由另一个过程使用的. 我使用Process Explorer检查了,并且只有W3WP.EXE可以通过日志文件处理.似乎不同的线程使问题出现了.这大约每24H! 发生一次 解决方案 如果定期进行,您可能需要检查IIS设置,并查看应用程序池是否以24小时的间隔回收. (我认为从内存中默认为29h) 如果是这种情况,您的问题可能是由IIS"旋转"一个新应用程序池引起的,而旧应用程序仍在处理请求(重叠的回收 - 这是默认行为),即一个新的记录器正在尝试尝试在旧过程中
8 2024-04-26
编程技术问答社区
如何禁用Elmah毫无手感的例外记录?
我已经在global.asax中创建了自定义错误处理,其中我处理了未经处理的异常.自定义消息已生成并显示,Elmah记录了例外. 唯一的问题是Elmah记录了两次.它的例外处理在全局Application_Error之前再次记录. 我需要在Application_Error中生成的条目,因为那是生成异常GUID的地方,并将其附加到用户消息并用Exception.Data编写,并由Elmah记录(我扩展了Logger). 如何跳过Elmah未经手的例外记录? 解决方案 转到web.config system.webserver/模块部分,注释/删除Elmah HTTP模块.这将防止Elmah未经治疗的例外记录. --> 在global.asax中手动将所有错误记录到Elma
14 2024-04-26
编程技术问答社区
如何使用System.Diagnostics.EventLog从一个任意的evxt文件中读取?
我如何使用 EventLogQuery 能够打开evtx文件,但在.NET 2.0中不可用. 解决方案 让我们假设日志文件为LogA.evtx. 复制LogA.evtx to C:\Windows\System32\winevt\Logs. 添加一个新的注册表密钥: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\eventlog 称为LogA.例如.在PowerShell中: Set-Location HKLM: New-Item .\SYSTEM\CurrentControlSet\services\eventlog -Name LogA 打开事件查看器以验证 loga 显示在应用程序和服务logs logs . 下 您现在可以使用EventLog打开LogA: using System; using System.Diagnostics; namespace EventL
12 2024-04-26
编程技术问答社区
在Blazor UI中显示未被发现的例外的细节
我们有一个使用自定义浏览器的客户,该客户不允许他们打开控制台以查看已记录的错误消息.不幸的是,我们无法访问他们的系统,因此我们需要以某种方式获得异常消息和堆叠跟踪. 我试图构建一个自定义的errorboundary( customErrorBoundary.cs: ... protected override void BuildRenderTree(RenderTreeBuilder builder) { if (ErrorContent is not null) { builder.AddContent(0, ErrorContent(CurrentException)); } builder.AddContent(1, ChildContent); } ... app.razor:
20 2024-04-26
编程技术问答社区
直接上传跟踪日志文件到Azure
我正在使用系统诊断跟踪写作来在我的应用程序中进行登录.我想将日志文件上传到Azure存储.我可以这样做,但是只有通过上传存储在项目文件夹中的日志.我创建了一个自定义跟踪侦听器,以直接上传文件. public TextLogTraceListener(string filePath, string db) { filePath = filePath + db + "\\" + DateTime.Now.ToString("MMddyyyy") + "_mylog.log"; logFileLocation = filePath; traceWriter = new StreamWriter(filePath, true); traceWriter.AutoFlush = true; } 在单独的功能中,我正在使用以下代码将存储在项目文件夹中的日志文件上传到Azure Storage using
12 2024-04-26
编程技术问答社区
无法让Application Insights显示调试遥测数据
我是一个具有应用程序见解的菜鸟,可悲的是,在整天的尝试中,我根本无法使它起作用.我尝试了以下代码: this.telemetryClient = new TelemetryClient(TelemetryConfiguration.CreateDefault()); this.telemetryClient.TrackTrace($"Test", Microsoft.ApplicationInsights.DataContracts.SeverityLevel.Warning); 但是,当我转到"应用程序见解"窗口并显示当前调试会话中的所有遥测,没有记录.一位用户说缺少一个applicationinsights.config文件(一个空的文件可以很好地调试),我创建了一个,但没有改变. 然后,我尝试了我可以找到的最简单的控制台应用程序-gah href="https://learn.microsoft.com/en-us/azure/azure-monitor/azure
12 2024-04-26
编程技术问答社区
为什么我的日志从不同线程的不同记录器写到同一个日志文件?
嗨,我想从不同线程写入不同的日志文件.每个线程都应该具有自己的日志文件.我已经研究了这个主题下的一些解决方案,但还没有找到对我有用的东西.特别是因为我是NLOG的新手,并且不知道如何制作NLOG配置文件.相反,我以编程方式配置我的nlog. 我的问题,我为主班和程序设置了以下设置: namespace TDXXMLParser { class Program { static void Main(string[] args) { var funcName = nameof(Main); //Logger details try { LaunchFolderMode(); } catch (Exception ex) {
6 2024-04-25
编程技术问答社区
有效地写入日志文件
在我的情况下,我有一个简单的listView,其中包含档案.当用户双击Filepath时,它会进行一些处理并最终打开图像.但是,我需要生成一个日志文件,该文件将输出到文本文件的日期和名称执行的文件.我很想知道在这种情况下生成日志文件的有效方法是什么? 是一种有效的方法? 每次用户单击listView项目时,我打开日志文件并将其写入...可能在backgrouns的seperatr线程上. 应用程序打开时,每次用户单击列表视图项目时,我都会将日志数据附加到内存中的数组.然后,在关闭事件上关闭应用程序时,我将日志数组写入日志文件. 你们建议或建议什么? 为什么? 解决方案 通常建议使用日志框架. 但是,如果您现在想保持简单,可以考虑创建这样的日志方法: 正如您所说的,主要想法是在文件中写作,例如,您可以这样做: var path = "Path to your log file"; var message = "Message to log"
8 2024-04-25
编程技术问答社区
Azure函数记录到应用程序洞察力不会记录低于警告级别
我创建了一个带有多个功能的新的Azure函数应用程序,但是我无法生命来打印出信息日志. 我有一些现有的.NET 3.1函数(几年前创建)在较旧的运行时运行(v3),并且我的hosts.json文件设置为: { "version": "2.0", "logging": { "LogLevel": { "Default": "None", "Function.MyFunc.User": "Information", "Function.MyFunc": "Warning" }, "applicationInsights": { "samplingSettings": { "isEnabled": false } } } } 这对我现有的功能非常有效.它打印出函数丢弃的错误,还可以记录我使用log.LogInformation(xxx)的信息. . 我遇到
4 2024-04-25
编程技术问答社区
Windows服务的OnStop()方法没有被调用
我已经在C#中编写了Windows Service来记录所有用户登录和登录,然后将它们保存在服务器上的表中. 我已经使用while循环true> true并在此循环中每分钟检查系统的当前用户,因此当我打开系统时,我的服务转到' starting '状态. 一切都很好,但是问题是当我关闭系统时,OnStop()方法不会被调用.我知道问题是关于服务启动时的状态,因为当我在服务的OnStart()方法中评论while循环时,OnStop()方法将正确执行. 解决方案 onstart(和onStop)不是不是饰面 - 它们旨在初始化服务然后完成.我通常要做的是创建一个单独的 thread (这是在 tpl 之前创建之前),启动线程,然后完成. 在您的情况下,线程将启动一个计时器,并等待停止信号,当服务停止时可以从OnStop方法发送.当停止信号到达时,它应停止计时器. 其他解决方案 onstart()必须返回操作系统,以下是MSDN文档, 服务应用程序设计
8 2024-04-25
编程技术问答社区
在NLog中,是否可以使用布局来定义日志级别?
我想使用布局在nlog中可以更改最小日志使用外部变量的级别: 启动nlog后,所有日志级别(例如:跟踪,调试,信息等)都设置为false,该>> false表明nlog无法正确解析minlevel属性. NLOG布局功能似乎仅适用于target属性. 我想实现的目标:在我的真实应用中,loglevel不是一个常数,而是一种自定义 bleatout渲染器. 我也尝试将value="Debug"替换为value="LogLevel.Debug"而没有成功. 解决方案 **
10 2024-04-25
编程技术问答社区
如何在C#中向SECURITY事件日志写日志?
我想在安全事件日志中写下这些值: Console.WriteLine("Level: {0}", eventInstance.LevelDisplayName); Console.WriteLine("Date: {0}", eventInstance.TimeCreated); Console.WriteLine("Forrás: {0}", eventInstance.ProviderName); Console.WriteLine("Event id: {0}", eventInstance.Id); Console.WriteLine("Task: {0}", eventInstance.TaskDisplayName); string sSource; string sLog; string sEvent; sSource = eventInstance.ProviderName; sLog = "Security"; sEvent = eventInstance.F
10 2024-04-25
编程技术问答社区
在wpf中通知ui在另一个线程上发生了什么的最佳方法?
我正在使用MVVM,在我的ViewModel中,我启动了一个线程(这是服务器应用程序,所以它是一个连接线程),我正在寻找一种适当的方式(或方式(!))来通知关于另一个线程上发生的事情的UI.我想这样做的方式,将某种文本框用于日志(可能存储在观测值中的行),并且每次在连接线程上发生某些事情时,我都希望在文本框中添加一条新行. 这是我设置命令的方式(该方法启动了一个正在侦听连接的线程): public ViewModel() { StartCommand = new RelayCommand(PacketHandler.Start); } PackEthandler类: public static void Start() { var connectionThread = new Thread(StartListening); connectionThread.IsBackground = true; c
6 2024-04-25
编程技术问答社区
在一个解决方案上为多个项目使用NLog c#.
我在一个解决方案中有8个控制台项目(我打算将来将它们转换为服务)相互引用.我计划创建一个Ilogger接口和Logger类,以封装NLOG方法,因为我不想在每个项目中引用NLOG.并将此界面从核心项目传递到其他每个构建参数.像 using Core ... ILogger logger = new Logger(); 问题是: 1)我可以为每个记录器使用一个配置吗?我使用在这里.主要是获取汇编名称等的呼叫者信息属性.因此,我不需要不同的日志文件或设置来确定日志的origin. 2),我应该这样做并创建8个Ilogger实例,而不是在核心汇编中创建静态类,并在每次需要时调用它的方法.我已经在其他每个组件中引用了核心,因此不会进行新的参考.我对8个ilogger的关注是并发写入一个文件/dB. 解决方案 1)我可以为每个记录器使用一个配置吗?我从这里使用想法.主要是呼叫者信息属性以获取汇编名称,等等.因此,我不需要不同的日志文件或设置来确定日志的origin
2 2024-04-25
编程技术问答社区
Log4Net的附加组件
我目前正在将所有登录名倾倒到Log4net文本文件中,并且很难阅读.是否有一个不错的log4net处理器(最好是我可以添加到我的ASP.NET应用程序的类,以便我可以远程查看日志),它将以一个不错的,易于阅读和搜索格式布置Log4Nnet转储? 解决方案 有一个log4j的apache工具,称为 Chainsaw 显然可以是与log4net日志文件一起使用(指令在这里> 还有一个商业工具,称为 log4net dashboard 也可以做到. 这些都不是基于网络的. 不久前有一个称为log4xsl的工具.如果将log4net配置为输出XML日志文件,则可以应用Log4xsl XSLT样式表,以在Web浏览器中呈现良好.但是该项目似乎已倒闭,但是您可以尝试在某个地方找到它(其他解决方案 log2console 可以读取日志文件,但您也可以使用它来监视"实时"事件通过.NET远程或UDP附录.还有一个商业工具" log4view",可以相同. 在您的情况下,登录
10 2024-04-25
编程技术问答社区
实时监控日志文件的最聪明方法?
我需要编写一个实时监视应用程序,该应用程序将Log-Files的信息存储到GridView中. +它们可以从我的应用程序中的其他功能/功能进一步处理. 我已经在服务器上运行了一个应用程序,该应用程序在奇数时间内将条目创建为日志文件. (CSV形式) 这些文件有时最多可以具有100MB.我并不总是想扫描/检查整个文件,因为我知道新的eTries将始终添加到文件的底部. 我应该如何构建更新功能(在实时监视应用程序中)? 我应该比较文件大小,以及文件大小是否已更改? - >检查/更新 我应该每1分钟检查文件吗? 我应该检查"约会改装"? 顺便说一句,全面扫描是耗时的,只能通过扫描新条目来减少这一点? 所以我的问题是:解决方案的最佳方法是什么?! 解决方案 我使用baretail.它运行良好,不断更新,只要您的日志中有有意义的陈述,您就可以轻松跟踪发生的更改.
10 2024-04-24
编程技术问答社区
在应用程序的发布版本中记录日志(C#)。
我很难在外部研究和StackOverflow/Progammers.StackExchange上找到有关此主题的信息,所以我想我在这里问.这主要是"最佳实践" 问题,但我也对性能的影响感兴趣. 背景: 我目前正在使用支持Windows Service组件的A WinForms应用程序中的NLOG记录框架.在整个应用程序中,我通过UDP输出监视了整个应用程序中有很多跟踪日志语句.错误/警告也转到事件日志和滚动日志文件,其中还包括信息级别. 问题: 在编译应用程序的发行版本时,处理所有记录代码的最佳实践是什么?是否应该从应用程序中删除所有跟踪/调试代码,因为它可能会对性能产生负面影响?由于NLOG记录由XML配置文件控制,因此删除听众以进行跟踪/调试日志记录会消除潜在的性能陷阱吗?我是否应该在预处理器指令中放置跟踪/调试记录元素,以防止将其编译为可发布的生产代码? 解决方案 当处理所有记录代码的最佳实践是什么 编译应用程序的发行版? 您可以像以前的级别一样留
8 2024-04-24
编程技术问答社区
常见的做法是在程序中加载依赖性(不同版本的dll)。
假设有一个使用2个第三方DLL的代码.一个是NLog.Extensions.Logging版本1.6.1用于记录另一个的是CryptoProvider.dll用.NET标准2.0编写的CryptoProvider.dll. NLog.Extensions.Logging内部使用Microsoft.Extensions.Logging版本2.1.0而CryptoProvider.dll内部使用Microsoft.Extensions.Logging版本2.0.0.因此,现在有一个关于版本不匹配的问题.因此,我应该如何设计加密驾驶DLL.这样解决问题. 解决方案 有可能使用app.config文件汇编\ bindingredirect 如下
10 2024-04-24
编程技术问答社区