安装扩展包:NServiceBus.Log4Net

Endpoint.cs增加注入

  1. log4net.Config.BasicConfigurator.Configure();
  2. NServiceBus.Logging.LogManager.Use<NServiceBus.Log4Net.Log4NetFactory>();

原理:

NBUS源码:可以看到,注入外部的日志需要用到 Use<T>或者UseFactory(ILoggerFactory loggerFactory)

  1. namespace NServiceBus.Logging
  2. {
  3. using System;
  4.  
  5. public static class LogManager
  6. {
  7. static LogManager()
  8. {
  9. Use<DefaultFactory>();
  10. }
  11.  
  12. static Lazy<ILoggerFactory> loggerFactory;
  13.  
  14. /// <summary>
  15. /// Used to inject an instance of <see cref="ILoggerFactory"/> into <see cref="LogManager"/>.
  16. /// </summary>
  17. public static T Use<T>() where T : LoggingFactoryDefinition, new()
  18. {
  19. var loggingDefinition = new T();
  20.  
  21. loggerFactory = new Lazy<ILoggerFactory>(loggingDefinition.GetLoggingFactory);
  22.  
  23. return loggingDefinition;
  24. }
  25.  
  26. /// <summary>
  27. /// An instance of <see cref="ILoggerFactory"/> that will be used to construct <see cref="ILog"/>s for static fields.
  28. /// </summary>
  29. /// <remarks>
  30. /// Replace this instance at application statup to redirect log event to your custom logging library.
  31. /// </remarks>
  32. public static void UseFactory(ILoggerFactory loggerFactory)
  33. {
  34. if (loggerFactory == null)
  35. {
  36. throw new ArgumentNullException("loggerFactory");
  37. }
  38.  
  39. LogManager.loggerFactory = new Lazy<ILoggerFactory>(() => loggerFactory);
  40. }
  41.  
  42. …………

再看扩展包:NServiceBus.Log4Net源码

基本思路就是Log4Net的Ilog接口和NBUS的ILog接口转换一波

源码:

https://github.com/Particular/NServiceBus.Log4Net/tree/master/src/NServiceBus.Log4Net

NServiceBus:使用自定义log4net的更多相关文章

  1. c# 自定义log4net过滤器

    有时候为了实现自己想要的多个日志文件记录不同的内容,可能需要自定义log4net过滤器,比如我这里需要记录三个文件,这三个文件的内容又不能重复,多次尝试未果. 为了不更改任何现有日志代码的情况下,于是 ...

  2. 在C#代码中应用Log4Net(二)典型的使用方式

    不管用什么框架,学什么东西,最初的想法还不是尽快地用上这个框架,所以我们在这个章节还是不打算介绍具体配置节的应用,而是直接给出一个经典的使用样例,让你尽快上手.即使你对Log4Net的配置不熟悉也完全 ...

  3. 在C#代码中应用Log4Net(二)典型的使用方式(转)

    不管用什么框架,学什么东西,最初的想法还不是尽快地用上这个框架,所以我们在这个章节还是不打算介绍具体配置节的应用,而是直接给出一个经典的使用样例,让你尽快上手.即使你对Log4Net的配置不熟悉也完全 ...

  4. NServiceBus-日志

    默认的日志 NServiceBus一些有限,固执己见,内置的日志记录. 默认的日��行为如下: 控制台 所有 Info(及以上)消息将被输送到当前的控制台. 错误将会写 ConsoleColor.Re ...

  5. log4net 自定义Layout日志字段

    最近在使用log4net的时候有一个简单的需求,就是自定义个格式化输出符.这个输出符是专门用来帮我记录下业务ID.业务类型的.比如,“businessID:328593,businessType: o ...

  6. Log4Net 配置SQL2008数据库 并传入自定义业务对象

    最近根据业务需要,俺们老大要求我们了解一个c#的组件——Log4Net 这玩意儿从来没弄过,感觉挺深奥的,结果经过2天的研究,还算小有所成吧,基本思路已经清晰明了了,不过过程中遇到一些很奇葩的问题,和 ...

  7. log4net:保存自定义参数到数据库

    log4net:保存日志到数据库 自定义参数 新建一个类,继承于PatternLayoutConverter public class CustomerPatternConverter : Patte ...

  8. log4net记录日志到数据库自定义字段

    假设数据库中有如下自定义字段:   1.根据自定义字段定义日志信息对象     public class MessageLog     {           /// <summary> ...

  9. log4net自定义字段写入SqlServer数据库 ASP.net

    首先申明,本示例经过本作者亲自试验通过,可以运行 第一步 编写log4net配置文件 此处为Log.xml,该文件放在与Web.config平级的位置 <?xml version="1 ...

随机推荐

  1. [转帖] 基于telegraf, influxdb, grafana 建立 esxi 监控

    [系统集成] 基于telegraf, influxdb, grafana 建立 esxi 监控 https://www.cnblogs.com/hahp/p/7677420.html 之前在 nagi ...

  2. DOS bcp

    C:\>bcp /?用法: bcp {dbtable | query} {in | out | queryout | format} 数据文件  [-m 最大错误数]             [ ...

  3. # Clion中编译多个cpp(实现单文件编译)

    Clion中编译多个cpp(实现单文件编译) 在不做任何配置情况下,Clion工程下只能有一个main()函数,新建多个cpp会导致报main()函数重复定义的错误,所以默认情况下无法在一个工程下编译 ...

  4. http请求之of_ordering_getmiditem

    //Public function of_ordering_getmiditem (string as_instr,string as_key) returns string //string as_ ...

  5. 在Window Server 2016中使用Web Deploy方式发布.NET Web应用

    1.在IIS里面点击获取新的Web平台组件 2.下载Web平台组件并安装 3.在其中搜索Web Deploy,找到3.5版本,并安装 4.继续搜索Web Deploy 3.6版本,并安装 安装好之后, ...

  6. [转载]java的传值和传引用

    本文转载自:https://blog.csdn.net/weixin_36759405/article/details/82764339 基本类型(byte,short,int,long,double ...

  7. Lab 色彩模型和取值范围

    L∈(0,100) a∈(-128,127) b∈(-128,127) opencv 的Lab数据对齐做了量化,使其处于0-255范围 L=L*2.55 a=a+128 b=b+128

  8. postman传数组参数,二维数组,多维数组

    一维数组: 传递: 接收: 二维数组: 传递: 接收: 依此类推,

  9. java实现spark常用算子之TakeSample

    import org.apache.spark.SparkConf;import org.apache.spark.api.java.JavaRDD;import org.apache.spark.a ...

  10. js判断浏览器内核如果是ie弹出提示非ie不进行任何操作

    如上做一个弹出框针对ie兼容 // 获取IE版本 function IEVersion() { // 取得浏览器的userAgent字符串 var userAgent = navigator.user ...