我正在编写一个 WinForms 应用程序。我需要将信息记录到文件中。通常我使用log4net http://logging.apache.org/log4net/用于记录,但由于限制,我无法添加引用。我无法添加外部对我的项目的引用,因为我必须部署单个可执行文件。
有没有内置的日志框架在 .NET 中,这样我就可以在不添加外部 dll 的情况下登录文件?
P.S:当然我不想打开流并手动写入。
是的系统.诊断.TraceListener http://msdn.microsoft.com/en-us/library/system.diagnostics.tracelistener.aspx班级。您需要定义 TRACE 常量才能使其工作,但您可以通过配置 app.config 使用许多内置的跟踪侦听器:
- ConsoleTraceListener 类 http://msdn.microsoft.com/en-us/library/system.diagnostics.consoletracelistener
- EventLog TraceListener 类 http://msdn.microsoft.com/en-us/library/system.diagnostics.eventlogtracelistener
- XmlWriterTraceListener 类 http://msdn.microsoft.com/en-us/library/system.diagnostics.xmlwritertracelistener
- TextWriterTraceListener 类 http://msdn.microsoft.com/en-us/library/system.diagnostics.textwritertracelistener
如果您想写入文件,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>
及用法:
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.");
就我个人而言,如果可以避免的话,我不会写入文本文件,事件日志是一个更好的位置,因为您可以排序、过滤,日志会自动清除,并且不会遇到文件锁定问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)