• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >ASP.NET > log4net教程日志分类和自动维护示例

log4net教程日志分类和自动维护示例

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-11

通过本文主要向大家介绍了log4net 日志级别,log4net不写日志,log4net 日志,c log4net 视频教程,log4net教程等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

如果我们需要通过配置不同的ILog,流程是这样的,首先要创建一个ILoggerRepository,通过它来进行日志等级的配置,和各种Appender,接着通过LogManager在ILoggerRepository获取一个Ilog对象,就可以写日志了。代码如下:

            ILoggerRepository repository = null;
            try
            {
                repository = LogManager.GetRepository(repositoryName);
            }
            catch (Exception) { }

            //找到直接返回ilog
            if (repository != null)
                return LogManager.GetLogger(repositoryName, "Defalut");

            //未找到则创建,多线程下很有可能创建时,就存在了
            try
            {
                repository = LogManager.CreateRepository(repositoryName);
            }
            catch (Exception)
            {
                repository = LogManager.GetRepository(repositoryName);
            }

            //配置日志等级  读取Appsettings默认配置 
            var appSet = ConfigurationManager.AppSettings.AllKeys;

            //查找日志等级
            const string logLevel = "LogLevel";
            var hasSettings = Array.IndexOf(appSet, logLevel);
            if (hasSettings > -1)
            {
                var level = ConfigurationManager.AppSettings[logLevel].ToLower();
                if (level == "all") repository.Threshold = Level.All;
                else if (level == "debug") repository.Threshold = Level.Debug;
                else if (level == "info") repository.Threshold = Level.Info;
                else if (level == "warn") repository.Threshold = Level.Warn;
                else if (level == "error") repository.Threshold = Level.Error;
                else if (level == "fatal") repository.Threshold = Level.Fatal;
                else if (level == "off") repository.Threshold = Level.Off;
            }
            else repository.Threshold = Level.All;

            //查找输出Appender
            const string logAppender = "LogAppender";
            hasSettings = Array.IndexOf(appSet, logAppender);
            if (hasSettings > -1)
            {
                var appenders = ConfigurationManager.AppSettings[logAppender].ToLower().Split(',');
                foreach (var appender in appenders)
                {
                    if (appender == "rollingfile") LoadRollingFileAppender(repository);
                    else if (appender == "console") LoadConsoleAppender(repository);
                    else if(appender == "trace") LoadTraceAppender(repository);
                }
            }
            else LoadRollingFileAppender(repository);

            return LogManager.GetLogger(repositoryName, "Default");
        }
</div>

Log4net 会自动维护ILog和ILoggerRepository,所以不用保存,通过LogManger获取即可。但是我没有找到方法来查找指定的ILoggerRepository是否存在,所以在上述代码中通过try catch进行判断。由于我们是通过代码方式配置log4net,但仍旧希望通过配置来设置日志等级和输出类型,所以我选择在Appsettings文件中进行配置,一次配置,针对所有的ILoggerRepository都生效。之所以不是针对每一个功能进行配置,主要是由于配置麻烦,而且如果真要这么做,直接在log4net中配置不同的logger,通过loggername引用,可能会更好些。

日志维护

于是接下来的问题是,如何删除日志?

log4net可以配置RollingFileAppender,翻译过来是滚动文件。通过设置MaximumFileSize和MaxSizeRollBackups 2个参数可以完成这样的目的,该日志文件每达到一定大小就会产生一个新文件,文件最大总数则为MaxSizeRollBackups,但前提的是文件名一致。

比如我们采用如下配置:

  &nbs

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • .net 日志系统解析
  • log4net教程日志分类和自动维护示例
  • .NET 日志系统设计思路及实现代码
  • log4net创建系统日志的详细步骤
  • Log4net日志记录组件的使用步骤详解和下载

相关文章

  • 2018-08-20MVC生成页码选择器返回HTML代码详解
  • 2017-05-11asp.net uploadify实现多附件上传功能
  • 2017-05-11记录asp.net网站是什么原因导致停止运行的代码
  • 2017-05-11asp.net如何将DataSet转换成josn并输出
  • 2017-05-11.NET开发基础:从简单的例子理解泛型 分享
  • 2017-05-11解读ASP.NET 5 & MVC6系列教程(3):项目发布与部署
  • 2017-05-11asp.net关于Cookie跨域(域名)的问题
  • 2017-05-11ASP.NET 用户多次登录的解决方法
  • 2017-05-11使用.NET存储XML数据的方法
  • 2017-05-11ASP.NET MVC+EF框架+EasyUI实现权限管系列

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • asp.net mvc4 mysql制作简单分页组件(部分视图)
    • asp.net 关于==?:和if()else()条件判断等效例子
    • c#网站WebConfig中域名引用示例介绍
    • ASP.NET中Webservice安全 实现访问权限控制
    • asp.net DbProviderFactory的使用-示例
    • asp.net配置会话状态Session实现代码
    • ASP.NET MVC Bundles 用法和说明(打包javascript和css)
    • asp.net sql 数据库处理函数命令
    • 使用DataTable.Select 方法时,特殊字符的转义方法分享
    • ASP.NET小结之MVC, MVP, MVVM比较以及区别(二)

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有