默认的日志
NServiceBus一些有限,固执己见,内置的日志记录。
默认的日��行为如下:
控制台
所有 Info
(及以上)消息将被输送到当前的控制台。
错误将会写 ConsoleColor.Red
。将书面警告 ConsoleColor.DarkYellow
。所有其他消息将被写 ConsoleColor.White
.
跟踪
所有 Warn
(及以上)消息将被写入 Trace.WriteLine
.
滚动的文件
所有 Info
(及以上)的消息将被写入一个滚动的日志文件。
这个文件将保持10 mb /文件和最多10个日志文件。
默认的日志目录 HttpContext.Current.Server.MapPath("~/App_Data/")
对网站和AppDomain.CurrentDomain.BaseDirectory
所有其他进程。
默认的文件名 nsb_log_yyyy-MM-dd_N.txt
,在那里 N
是当日志文件达到的序列号的最大大小。
日志级别
支持的日志记录级别
- 调试
- 信息
- 警告
- 错误
- 致命的
改变默认设置
通过改变设置配置
的主要参数是测井分辨率多少信息记录。日志只在生产场景错误通常是可取的,因为它提供了最佳性能。然而,当系统出现异常波动,有更多的信息记录可以给更大的了解是什么导致了这个问题。这是由应用程序配置文件控制包括以下条目:
<configSections>
<section name="Logging" type="NServiceBus.Config.Logging, NServiceBus.Core" />
</configSections>
<Logging Threshold="Debug" />
的 Threshold
值的属性 Logging
元素可以是任意的 Debug
, Info
, Warn
, Error
或 Fatal
.
的 Threshold
表明将输出的日志级别。例如一个值 Warn
意味着所有 Warn
, Error
和 Fatal
将输出消息。
修改配置有影响,必须重新启动的过程。
通过代码更改设置
代码可以配置水平和日志目录。要做到这一点,使用 LogManager
类。
var defaultFactory = LogManager.Use<DefaultFactory>();
defaultFactory.Directory("pathToLoggingDirectory");
defaultFactory.Level(LogLevel.Debug);
确保你之前任何总线配置就完成了。
自定义日志记录
对于更高级的日志记录,建议您使用的成熟的可用于. net日志库。
移动定制日志意味着没有在上面使用的方法默认的日志适用。
当配置日志记录
重要的是要配置日志进行任何总线配置之前,因为日志配置在每个NServiceBus类的静态上下文。所以它应该配置启动的应用程序,例如
- 开始的时候
Main
一个控制台应用程序或windows服务。 - 在类的构造函数实现
IConfigureThisEndpoint
当使用NServiceBus.Host. - 在你的开始
Global.Application_Start
在asp.net应用程序中。
NLog
有一个nuget包可用,允许简单的NServiceBus和集成NLog.
Install-Package NServiceBus.NLog
然后使用其标准配置NLog API调用
LogManager.Use<NLogFactory>();
示例使用
var config = new LoggingConfiguration();
var consoleTarget = new ColoredConsoleTarget
{
Layout = "${level}|${logger}|${message}${onexception:${newline}${exception:format=tostring}}"
};
config.AddTarget("console", consoleTarget);
config.LoggingRules.Add(new LoggingRule("*", LogLevel.Debug, consoleTarget));
LogManager.Configuration = config;
NServiceBus.Logging.LogManager.Use<NLogFactory>();
CommonLogging
有一个nuget包可用,允许简单的NServiceBus和集成CommonLogging.
Install-Package NServiceBus.CommonLogging
然后使用其标准配置CommonLogging API调用
LogManager.Use<CommonLoggingFactory>();
示例使用
LogManager.Adapter = new ConsoleOutLoggerFactoryAdapter();
NServiceBus.Logging.LogManager.Use<CommonLoggingFactory>();
log4Net
有一个nuget包可用,允许简单的NServiceBus和集成log4Net.
Install-Package NServiceBus.Log4Net
然后使用其标准配置Log4net API调用
LogManager.Use<Log4NetFactory>();
示例使用
var =新PatternLayout布局
{
ConversionPattern = " % d[t]% % 5 p % c[x]% - % m % n”
};
layout.ActivateOptions();
新ColoredConsoleAppender var consoleAppender =
{
阈值= Level.Debug,
布局=布局
};
consoleAppender.ActivateOptions();
新RollingFileAppender var fileAppender =
{
DatePattern = " yyyy-MM-dd . txt”,
RollingStyle = RollingFileAppender.RollingMode.Composite,
MaxFileSize = 10 * 1024 * 1024,
MaxSizeRollBackups = 10,
新FileAppender.MinimalLock LockingModel =(),
StaticLogFileName = false,
文件= @“nsblog”,
布局=布局,
AppendToFile = true,
阈值= Level.Debug,
};
fileAppender.ActivateOptions();
BasicConfigurator。配置(fileAppender consoleAppender);
LogManager.Use < Log4NetFactory >();