C# 登录应用程序
我构建了一个应用程序,并希望在将其发送给用户之前在应用程序中使用日志记录,以了解用户在出现任何错误之前所做的操作。C# 登录应用程序,c#,wpf,logging,trace,C#,Wpf,Logging,Trace,我构建了一个应用程序,并希望在将其发送给用户之前在应用程序中使用日志记录,以了解用户在出现任何错误之前所做的操作。我以前从未使用过日志记录,因此,我做了一些研究,为相同的问题找到了好的方法,也许.NET中的类Trace在这种情况下可能会有所帮助。 在我的项目的App.Config文件中设置TextWriterTraceListener,并在codeTrace.Writeline(“错误信息”,“字段”)中使用,在这里使用文本文件似乎是一个更好的方法 1) 即使在阅读了大量的内容之后,我也不确定记
我以前从未使用过日志记录,因此,我做了一些研究,为相同的问题找到了好的方法,也许.NET中的类
Trace
在这种情况下可能会有所帮助。在我的项目的
App.Config
文件中设置TextWriterTraceListener
,并在codeTrace.Writeline(“错误信息”,“字段”)中使用,在这里使用文本文件似乎是一个更好的方法代码>
1) 即使在阅读了大量的内容之后,我也不确定记录日志的好方法是什么
是否应该有不同的错误记录器和信息日志文件
日志记录如何用于指定不同类型的错误(如警告、严重、错误等)
2) 我想在解决方案中的另一个项目中使用相同的日志文件。那么,我是否要在我的项目的App.Config
中添加相同的Trace Listener
部分?使用日志库(如log4net),您可以轻松地完成所有需要的事情。您可以在配置文件中设置日志记录,以转到事件日志、文件、控制台等(或任意组合),并独立设置日志记录级别
也就是说,您可以说该文件将包含信息、警告、错误和灾难,但事件日志将只记录错误和灾难
通常,几乎所有日志库都具有这些特性。下面的示例仅针对log4net,但相同的概念适用于大多数日志库
要在解决方案中的任何类中获取记录器,只需在类中请求记录器:
public MyClass
{
private static readonly ILog _log = log4net.LogManager.GetLogger(typeof(MyClass));
public void SomeMethod()
{
_log.Debug("This is a debug message.");
_log.Info("This is an informational message.");
_log.Warn("This is a warning message.");
_log.Error("This is an error message.");
_log.Fatal("This is a fatal message.");
}
}
此外,您可以基于记录器进行过滤,也就是说,您可以禁止来自特定类的日志消息,或者仅显示类子集的日志消息,等等
示例配置设置块如下所示。这将创建一个滚动文件appender(保存几天的日志)和控制台appender
<log4net>
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="c:\logs\AgentLog"/>
<appendToFile value="true"/>
<datePattern value=".yyyy-MM-dd"/>
<rollingStyle value="Date"/>
<MaxSizeRollBackups value="14"/>
<param name="StaticLogFileName" value="false"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%d{HH:mm:ss.fff} [%thread] %-5level %logger{1} - %m%n"/>
</layout>
</appender>
<appender name="ColoredConsoleAppender" type="log4net.Appender.ColoredConsoleAppender">
<mapping>
<level value="FATAL"/>
<foreColor value="Yellow"/>
<backColor value="Red, HighIntensity"/>
</mapping>
<mapping>
<level value="ERROR"/>
<foreColor value="Red, HighIntensity"/>
</mapping>
<mapping>
<level value="WARN"/>
<foreColor value="Yellow, HighIntensity"/>
</mapping>
<mapping>
<level value="INFO"/>
<foreColor value="Green, HighIntensity"/>
</mapping>
<mapping>
<level value="DEBUG"/>
<foreColor value="White"/>
</mapping>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%d{HH:mm:ss.fff} [%thread] %-5level %logger{1} - %m%n"/>
</layout>
</appender>
<root>
<level value="INFO"/>
<appender-ref ref="RollingFileAppender"/>
<appender-ref ref="ColoredConsoleAppender"/>
</root>
</log4net>
查看一个非常好且有良好文档记录的log4net项目:+1 log4net。非常好的全功能记录器,具有多个严重性级别、自定义附加器等。您是否真的尝试过对此进行研究?在“.net日志记录”或“C#日志记录”的搜索结果中有大量可用资源。键入这个问题比键入一个如此大的问题要省力。@Robotsushi:请阅读MSDN文档。你们能指出一些好的链接来让事情变得更清楚吗?若你们能使用Log4Net,那个么就这样做,若不能使用企业库。两者都不是很难使用。很抱歉,我之前没有提到我不能在我的项目中使用外部库。有没有一个好的方法我可以遵循,而不是像我在原始帖子中所问的那样?你的工作场所是如何定义外部库的?有什么非微软的吗?如果它是Microsoft附加程序库呢?我当然可以看看Microsoft附加程序库,但是使用任何外部的东西都需要时间才能获得许可。这就是为什么我坚持从.NETTrace
类开始为这个小应用程序编写log4net是appache,它是完全免费的。如果您只能选择MS路径,那么您应该查看企业库,它有用于日志记录的应用程序块等@user1240679,Log4Net比企业库更容易使用。获得使用它的许可。