Winforms日志框架

Dan*_*lba 6 .net c# logging

我正在写一个WinForms应用程序.我需要将信息记录到文件中.通常我使用log4net进行日志记录,但由于限制,我无法添加引用.我无法向项目添加外部引用,因为我必须部署单个可执行文件.

.NET中是否有内置的日志框架,所以我可以在不添加外部DLL的情况下登录文件?

PS:当然我不想打开流并手动编写.

Chr*_*s S 12

是的,System.Diagnostics.TraceListener类.您需要定义TRACE常量才能使其工作,但您可以通过配置app.config来使用许多内置的tracelistener:

如果你想写一个文件,app.config看起来像这样,你也可以添加很多过滤器:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <system.diagnostics>
        <trace autoflush="false" indentsize="4">
          <listeners>
            <add name="yourName" type="System.Diagnostics.TextWriterTraceListener" initializeData="c:\mylogfile.txt" />
          </listeners>
        </trace>
    </system.diagnostics>
</configuration>
Run Code Online (Sandbox Code Playgroud)

用法:

Trace.TraceError("There's been an error captain: {0}", e);
Trace.TraceWarning("The system broke but don't worry.");
Trace.TraceInformation("Starting up the engines.");
Run Code Online (Sandbox Code Playgroud)

我个人不会写文本文件,如果你可以避免它,事件日志是一个更好的位置,因为你可以排序,过滤,日志是自动清除,你不会得到文件锁定问题.


Ast*_*sti 7

好吧,如果你对log4net很满意,那就这样吧.使用您选择的日志记录工具,并在构建后使用ILMerge将所有依赖项合并到单个可执行文件中.

这正是它的目的.

如果您不想在命令行模式下使用它,还有一个GUI.