Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 登录应用程序_C#_Wpf_Logging_Trace - Fatal编程技术网

C# 登录应用程序

C# 登录应用程序,c#,wpf,logging,trace,C#,Wpf,Logging,Trace,我构建了一个应用程序,并希望在将其发送给用户之前在应用程序中使用日志记录,以了解用户在出现任何错误之前所做的操作。我以前从未使用过日志记录,因此,我做了一些研究,为相同的问题找到了好的方法,也许.NET中的类Trace在这种情况下可能会有所帮助。 在我的项目的App.Config文件中设置TextWriterTraceListener,并在codeTrace.Writeline(“错误信息”,“字段”)中使用,在这里使用文本文件似乎是一个更好的方法 1) 即使在阅读了大量的内容之后,我也不确定记

我构建了一个应用程序,并希望在将其发送给用户之前在应用程序中使用日志记录,以了解用户在出现任何错误之前所做的操作。
我以前从未使用过日志记录,因此,我做了一些研究,为相同的问题找到了好的方法,也许.NET中的类
Trace
在这种情况下可能会有所帮助。
在我的项目的
App.Config
文件中设置
TextWriterTraceListener
,并在code
Trace.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附加程序库,但是使用任何外部的东西都需要时间才能获得许可。这就是为什么我坚持从.NET
Trace
类开始为这个小应用程序编写log4net是appache,它是完全免费的。如果您只能选择MS路径,那么您应该查看企业库,它有用于日志记录的应用程序块等@user1240679,Log4Net比企业库更容易使用。获得使用它的许可。