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         /// 创建Appender
21         /// </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 RollingFileAppender
28                                {
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     }

时间: 2024-10-05 09:35:37

log4net 用代码记录日志的相关文章

译:在ASP.NET MVC5中如何使用Apache log4net 类库来记录日志

译文出处:http://www.codeproject.com/Articles/823247/How-to-use-Apache-log-net-library-with-ASP-NET-MVC 在运行软件程序的时候,跟踪和监控日志是一种记录过程的好方法. 简介: 在运行软件程序的时候,跟踪和监控日志是一种记录过程的好方法.尤其在应用程序出错的时候,日志是我们最需要的文件.不管是在web,winform,windowsphone. 这里我们将一步一步讲解如何在ASP.NET MVC5应用程序中

Log4Net(二)之记录日志到文档详解

原创文章,转载必需注明出处:http://www.ncloud.hk/%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB/log4net-%E4%BA%8C-%E4%B9%8B%E8%AE%B0%E5%BD%95%E6%97%A5%E5%BF%97%E5%88%B0%E6%96%87%E6%A1%A3%E8%AF%A6%E8%A7%A3/ 前面一章.我们简单的介绍了log4net的功能,以及一个记录日志到文档的案例. 本节.将带领大家详细了解上节案例中各行代码的意思. 1

Log4Net(三)之记录日志到数据库

前面两篇短文向大家介绍了如何使用log4net,以及如何将log4net记录到文本文件中.下面本文将向大家介绍如何将log4net记录到数据库中. 经过前面的介绍,我想大家对使用log4net的过程已经很熟悉了,下面直接贴上log4net存日志到数据库的配置内容: 将前面log4net.config文件的root节点和appender节点替换为下面的内容, <root> <level value="ALL"/> <appender-ref ref=&quo

将Log4Net 日志保存到mongodb数据库实践

log4net的大名早有耳闻,一直没真正用过,这次开发APP项目准备在服务端使用log4net. 日志的数据量较大,频繁的写数据库容易影响系统整体性能,所以独立将日志写到mongodb数据库是不错的选择.---经过2天的摸索,总结出本文档. github有个开源项目log4mongo-net,另一位斯克迪亚作者根据开源项目又做了修改http://skyd.sinaapp.com/archives/1282. 所以直接拿斯克迪亚的代码来使用. 1.将log4net和mongodb驱动升级为最新版本

Log4Net使用技巧

Log4Net使用技巧 1.Log4Net简介 log4net库是Apache log4j框架在Microsoft .NET平台的实现,是一个帮助程序员将日志信息输出到各种目标(控制台.文件.数据库等)的工具.log4net是Apache软件基金会Apache Logging Services工程的一部分.Apache日志服务工程致力于为程序调试和审计提供跨语言的日志服务. 今天,我带领大家在ASP.NET上使用Log4Net记录日志 2.Log4Net 下载 下载地址: http://down

Log4Net日志记录介绍

原文地址 : http://www.cnblogs.com/wolf-sun/p/3347373.html#3009010 简介 log4net库是Apache log4j框架在Microsoft .NET平台的实现,是一个帮助程序员将日志信息输出到各种目标(控制台.文件.数据库等)的工具.     log4net是Apache软件基金会Apache Logging Services工程的一部分.Apache日志服务工程致力于为程序调试和审计提供跨语言的日志服务.(f:百度百科) 原理 Log4

Log4Net 自定义字段记录到数据库

大家可能都用过Log4net插件来记录日志,该插件默认提供了这几个字段@log_date,@exception, @thread, @log_level, @logger, @message, 但是这并不能完全满足我们日常记录日志的需求,我们可能需要扩展自己所需的其他字段,来记录到数据库.例如,对于用户操作日志,我们可能需要记录操作人员ID或者姓名,或者操作类型或者操作信息等. 下面简单地介绍一下Log4Net 自定义字段记录到数据库: 第一步,当然是创建对应的数据库日志表,如下图所示: 第二步

ASP.NET MVC5中 log4net

在运行软件程序的时候,跟踪和监控日志是一种记录过程的好方法. 简介: 在运行软件程序的时候,跟踪和监控日志是一种记录过程的好方法.尤其在应用程序出错的时候,日志是我们最需要的文件.不管是在web,winform,windowsphone. 这里我们将一步一步讲解如何在ASP.NET MVC5应用程序中使用Apache log4net 框架来记录日志. 我用的是 Visual Studio Express 2013 和.NET framework 4.5. 第一步: 打开 Visual Studi

log4net 日志框架的配置

log4net 日志框架的配置(一) 添加对log4net程序集的引用 选择程序集文件添加引用即可,需要注意的是需要添加相应程序版本的程序集,如果你的应用是基于.netFramework2.0,则应选择net 2.0版本的程序集 修改配置文件,配置log4net相关设置 在web.config或在app.config(如果没有则创建一个)中,配置log4net的使用 1 <?xml version="1.0"?> 2 3 <configuration> 4 &l