Mik*_*oud 0 .net c# logging system.diagnostics workflow-foundation-4
使用System.Diagnostics进行跟踪.虽然我已经使用过log4net和其他日志记录解决方案,但我只对跟踪工作感兴趣System.Diagnostics.
即使我发出的TraceEvent文件没有在任何地方创建.
我有一个托管一些WF服务的应用程序.其中一个服务是状态机,其初始状态如下所示:

在LogMessage自定义活动也非常直截了当.它接收四个基本参数:

将TraceSource变量定义为:

然后简单地调用TraceEvent:

这种情况的结构TraceSource和TraceListener如下:
<system.diagnostics>
<trace autoflush="true"/>
<sources>
<source name="log" switchValue="All">
<listeners>
<add name="file" type="Microsoft.VisualBasic.Logging.FileLogTraceListener, Microsoft.VisualBasic, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
BaseFileName="gsf_workflows.txt"
DiskSpaceExhaustedBehavior="ThrowException"
Location="Custom"
CustomLocation="D:\Log"
MaxFileSize="81920000"
LogFileCreationSchedule="LogFileCreationScheduleOption.Daily"/>
</listeners>
</source>
</sources>
</system.diagnostics>
Run Code Online (Sandbox Code Playgroud)
Sha*_*son 10
仅供参考,所有人都在这个页面上磕磕绊绊..
如果文件夹丢失,FileLogTraceListener将不会创建文件夹.
FileLogTraceListener不会绕过安全性,您的进程标识将需要在目标文件夹上创建+修改权限.
目标可执行文件夹是"糟糕的形式",这往往会根据主机而改变(例如,在IIS Express下编写时,您没有写入与DevEnv相同的位置,也没有写入托管的Web应用程序.)一个建议是您可能希望选择"自定义"并指定特定路径(例如X:\ logfiles)而不是"ExecutableLocation"
写入器在内部缓冲区填满时刷新到磁盘,如果内存为我提供,则默认缓冲区大小为8KB.这不是跟踪侦听器的一个方面,而是它写入的基础文件流.
最后,如果您不需要FileLogTraceListener的形式和功能,而是考虑跟踪EventLog(有一个监听器),因为这可能更容易被其他开发人员和非开发人员访问(例如ops工程师,第三方监控工具等)
| 归档时间: |
|
| 查看次数: |
4863 次 |
| 最近记录: |