首页 > 编程知识 正文

vlog官网,vmlogin使用教程

时间:2023-05-06 12:53:13 阅读:171667 作者:3251

内容

安装日志

nog可以在NuGet上下载。

如果只安装NLog.Config软件包,则NLog和NLog.Schema这两个软件包将安装在一起,以实现启动配置和智能识别。

使用GUI或在软件包管理控制台中使用以下命令Install-Package NLog.Config

那么,你现在可以编译并运行你自己的APP应用程序,它可以使用NLog的功能。

配置NLog输出的目标

如果配置了一个或多个NLog targets,NLog将只生成相应的项目。

NLog可以使用NLog.config的XML配置文件来配置您的APP应用程序。 (必须始终修改文件属性以进行复制。 以下是简单的NLog.config配置内容。

xmlns 3360 xsi=' http://www.w3.org/2001/XML架构-instance '

注:这里,targets表示写入方式,上述的logfile表示使用txt文件的方式进行记录,logconsole表示在控制台进行记录,rules表示与写入方式对应的规则也可以用代码方式构成例如,下面的代码类似于:

var config=new nlog.config.logging configuration (;

var log file=new nlog.targets.filetarget ({ filename=' file.txt ',Name='logfile' } );

varlogconsole=new nlog.targets.console target ({ name=' log console ' } );

config.logging rules.add (new nlog.config.logging rule (' * ',LogLevel.Info,logconsole ) );

config.logging rules.add (new nlog.config.logging rule (' * ',LogLevel.Debug,logfile ) );

nog.log manager.configuration=config;

日志信息的写入

获取记录器并向记录器写入消息的方法示例:

var logger=nlog.log manager.getcurrentclasslogger (;

Logger.info(Helloworld );

如果正确设置了NLog targets,则上述代码会将信息输出到设置的targets。

logger具有名称,可以通过logging-rules (请参见上面配置示例中的name='*”)重定向到所需的目标。

使用nlog.log manager.getcurrentclasslogger ()可以创建包含命名空间的调用类名的logger . 也可以使用指定显式名称(.nlog.logmanager.getlogger ) )

logger可以使用各种logging-rules (请参见以上配置示例中的minLevel )配置的LogLevels,并将用户相关信息重定向到targets的:

logger未绑定到特定目标。 写入一个logger的消息可以根据logging-rules进行配置,并可以写入多个目标。 通过保持这种隔离,可以在代码中保留日志记录。 此外,通过在一个位置更新配置,可以轻松更改日志的创建方式和位置。 也可以显示过滤器日志消息。

日志级别

每个记录中的信息都有一个日志级别,用于指示该记录信息的重要性或详细程度。 NLog可以根据日志消息的名称和日志级别路由日志消息。

NLog支持以下日志记录级别: Trace -非常详细的日志,包括最详细的信息,例如协议的有效载荷。 通常,此日志级别仅在开发过程中使用。

调试-调试信息、仅次于跟踪的详细信息,在生产环境中通常无效

信息性消息,通常在生产环境中有效;

Warn -警告消息。 通常用于不重要的问题。 这些问题能否恢复,是暂时的障碍。

错误消息-经常记录Exceptions“异常”信息;

故障-非常严重的错误!

公共类别我的类别

{

privatestaticnlog.logger logger=nlog.log manager.getcurrentclassloger (;

公共语音我的方法1 (

{

logger.trace (sampletracemessage

");

logger.Debug("Sample debug message");

logger.Info("Sample informational message");

logger.Warn("Sample warning message");

logger.Error("Sample error message");

logger.Fatal("Sample fatal error message");

// alternatively you can call the Log() method

// and pass log level as the parameter.

logger.Log(LogLevel.Info, "Sample informational message");

}

}

布局和布局渲染器

布局和布局渲染器 可以配置日志消息如何写入NLog targets.

下面展示了一个大多数 NLog targets 使用的简单布局方式 SimpleLayout :

也可以进行相应的配置,以获取更详尽的信息:

你也可以使用更复杂的布局,而不是简单的布局:

更详尽信息,参考: Layouts

日志最佳实践每个类中,Logger 应该被设置成一个静态变量

每创建一个 Logger 都会有一定的性能损耗,因为它必须获取锁和分配对象

因此建议像这样创建logger:

namespace MyNamespace

{

public class MyClass

{

private static NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();

}

}

Logger 应该处理字符串格式化

避免预先执行字符串分配或字符串连接,而是让日志记录器执行格式化。这将允许NLog推迟格式化并减少开销。

因此,建议您这样执行日志:

logger.Info("Hello {0}", "Earth");Logger 应该记录异常

避免将异常作为格式化参数,而是将其显式地作为第一个参数提供。这将帮助NLog目标提供更好的日志记录。

try

{

}

catch (Exception ex)

{

logger.Error(ex, "Something bad happened");

}

从 NLog.config XML配置文件中验证配置

默认情况下,NLog 允许记录所有异常,因此,日志记录的问题不会导致应用程序中断。但是为更多的应用程序记录日志是至关重要的,所以如果 NLog 配置文件的实例错误,那将是致命的.

增加 throwConfigExceptions="true" 会使 NLog 在配置文件错误的情况下抛出异常:

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

throwConfigExceptions="true">

类似的有 throwExceptions="true", 但它不能在生产环境中使用,因为它会对应用程序造成破坏. 它被设计用在单元测试、本地故障排除中.详见Troubleshooting ConfigurationRemember to Flush

当应用停止运行时,NLog 默认会自动尝试刷新. Microsoft Windows 给.Net应用程序在被终止前执行关机(通常是2秒)的时间。如果一个 NLog配置了需要网络传输的 NLog Tagets (Http、Mail、Tcp)运行在Linux/Windows,那么执行一个手动的 Flush/Shutdown 是一个明智之举.

NLog.LogManager.Shutdown(); // 刷新并关闭内部线程和计时器。

运行在Mono/Linux 的 .NET 应用在进入应用程序关闭阶段前,必需去停止线程和计时器. 如果未执行完成会导致未处理的异常和分割错误,以及其他不可预知的行为。

封装器

NLog 支持特殊类型的 targets ,这些类自己本身不做任何日志记录,但是会修改其它 loggers 的行为. 这些loggers被称为封装器. 一般常用的是:AsyncWrapper - 提供异步方式缓冲执行目标写入,可以提高性能;

BufferingWrapper - 简单批处理日志信息. 可能仅在某些日志事件发生时才发送批处理(例如 异常信息);

AsyncWrapper 提供一个便捷的快捷设置方式,在配置文件中添加 async="true" 即可:

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

这样设置之后,所有写入文件的日志将以异步的方式,可以提高调用线程的响应能力。

参考资料:

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。