首页 > 代码库 > log4net 用代码记录日志

log4net 用代码记录日志

log4net  用代码记录日志

   今天在开发项目的时候,遇到跨域调用log4net中的类,出现了一个bug,提示LogImpl未标记可序列化,此时,我靠,麻烦了,这个类又不是咱们自己的,改源码我想应该不是很实际了把,然后有以下方案:

1.改源码;

2.从子域抛异常到主域,然后在主域里记录;

3.在子域配置app.cofig;

4.在子域用代码创建log;

方案4可用,其他都不可用;

方案一:修改源码:最后出现在System类中去了,此时,我靠,这个方案肯定不行,系统类肯定没法修改了;【果断排除】

方案二:从子域抛异常到主域,然后在主域里记录,此方案还算可以,只是主域和子域都会记录日志的;【不是很好】

方案三:在子域配置app.cofig,这个肯定不行,配置了,当子域中要用到时,两个会冲突;【果断排除】

方案四:在子域用代码创建log【下面这个类】,但也折腾了好几天,老是记录不到,经过调试发现:IsDebugEnabled =fasle;

这个属性是否记录日志;

问题找到了,所以就得找解决办法,又折腾了好久,通过源码找到了问题;

本想直接修改这个IsDebugEnabled=true;可是它是只读的不允许修改;

原来老大在这里啊,你害的我找了半天;由此为了让更多人少走弯路,才总结了此博客,也为自己做备忘;

Configured这个属性决定着IsDebugEnabled;

 var hierarchy = new Hierarchy { Configured = true };
            logger.Hierarchy = hierarchy;

 

         创建日志记录;

 

 1     public class ProjectsLog 2     { 3         /// <summary> 4         /// 创建Log 5         /// </summary> 6         public static ILog CreateLog(string name) 7         { 8             var appender = CreateAppender(name); 9             var log = LogManager.GetLogger(name);10             var logger = (Logger)log.Logger;11             logger.RemoveAllAppenders();12             logger.AddAppender(appender);13             logger.Level = Level.Info;14             var hierarchy = new Hierarchy { Configured = true };15             logger.Hierarchy = hierarchy;16             return log;17         }18 19         /// <summary>20         /// 创建Appender21         /// </summary>22         private static IAppender CreateAppender(string name)23         {24             var baseDir = AppDomain.CurrentDomain.BaseDirectory;25             dir = Path.Combine(baseDir , name);26 27             var appender = new RollingFileAppender28                                {29                                    AppendToFile = true,30                                    DatePattern = "yyyy-MM-dd‘.log‘",31                                    File = dir + "/"32                                };33 34             var layout = new PatternLayout { ConversionPattern = "-------------------------------------------------------------------------------%n[%d] %-5level - %m%n" };35             layout.ActivateOptions();36 37             appender.Layout = layout;38             appender.MaxSizeRollBackups = 30;39             appender.RollingStyle = RollingFileAppender.RollingMode.Date;40             appender.StaticLogFileName = false;41             appender.Name = name;42             appender.ActivateOptions();43             return appender;44         }45     }
View Code

 

log4net 用代码记录日志