Log4Net 日志管理

2023-11-19

Log4Net日志管理

    A.Log4Net日志管理

    Log4Net的日志级别如下:

级别

允许的方法

Boolean属性

优先级别

OFF

 

 

Highest

FATAL

void Fatal(...);

bool IsFatalEnabled;

 

RROR

void Error(...);

bool IsErrorEnabled;

 

WARN

void Warn(...);

bool IsWarnEnabled;

 

INFO

void Info(...);

bool IsInfoEnabled;

 

DEBUG

void Debug(...);

bool IsDebugEnabled;

 

ALL

 

 

Lowest

        Log4Net的日志管理提供了多种输出介质如日志文件、数据库、控制台等,下面我们着重介绍以下几    种常用的介质及其使用方法:

    1、输出介质为日志文件

    a) 配置文件中的配置

   <configSections>

    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />

   </configSections>

   <log4net>

       <root>

        <!--这里设置了在系统中日志记录的级别,如果在系统中需要记录的级别小于                此处设置的级别则日志不作记录-->

            <level value="ALL" />

            <!--定义了日志输出的介质的类型,可定义多种输出介质-->

            <appender-ref ref="LogFileAppender" />

        </root>

        <!--输出至指定的日志文件-->

        <appender name="LogFileAppender" type="log4net.Appender.FileAppender" >

            <!--该配置项参数指明了日志文件存放的地方-->

            <param name="File" value="d:\log\Client.log" />

            <!--该配置项参数指明是否在原文件中添加日志信息-->

            <param name="AppendToFile" value="true" />

            <!--该配置项参数指明输出信息的布局或格式-->

            <layout type="log4net.Layout.PatternLayout">

                <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />

            </layout>

        </appender>

    </log4net>

    b) 应用程序中的调用

    log4net.ILog log = log4net.LogManager.GetLogger("aaa");

    //写Error级别的日志信息

    log.Error("输出Error级别的日志信息")

    //写Info级别的日志信息

    log.Info("输出Info级别的日志信息");


    2、输出介质为数据库

    a) 配置文件中的配置

    <configSections>

        <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,  log4net" />

     </configSections>

     <log4net>

        <root>

        <!--这里设置了在系统中日志记录的级别,如果在系统中需要记录的级别小于                此处设置的级别则日志不作记录-->

            <level value="ALL" />

            <!--定义了日志输出的介质的类型,可定义多种输出介质-->

            <appender-ref ref="AdoNetAppender" />

        </root>

        <!--输出至数据库(Sql Server)。。。测试数据库用Northwind-->

        <appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender">

            <!--设置缓存中能存放的日志信息个数-->

            <bufferSize value="2" />

            <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=.0, Culture=Neutral, PublicKeyToken=b

            <connectionString value="server=(local);database=Northwind;integrated security=false;persist security info=True;UID=sa;PWD=" />

            <commandText value="INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" />

       <!--传入数据库的相对应字段的参数值-->

            <parameter>

                <!--传入的参数名-->

                <parameterName value="@log_date" />

                <!--传入参数的类型-->

                <dbType value="DateTime" />

                <!--传入参数的布局或格式-->

                <layout type="log4net.Layout.RawTimeStampLayout" />

            </parameter>

            <parameter>

                <parameterName value="@thread" />

                <dbType value="String" />

                <size value="255" />

                <layout type="log4net.Layout.PatternLayout">

                    <conversionPattern value="%thread" />

                </layout>

            </parameter>

            <parameter>

                <parameterName value="@log_level" />

                <dbType value="String" />

                <size value="50" />

                <layout type="log4net.Layout.PatternLayout">

                    <conversionPattern value="%level" />

                </layout>

            </parameter>

            <parameter>

                <parameterName value="@logger" />

                <dbType value="String" />

                <size value="255" />

                <layout type="log4net.Layout.PatternLayout">

                    <conversionPattern value="%logger" />

                </layout>

            </parameter>

            <parameter>

                <parameterName value="@message" />

                <dbType value="String" />

                <size value="4000" />

                <layout type="log4net.Layout.PatternLayout">

                    <conversionPattern value="%message" />

                </layout>

            </parameter>

            <parameter>

                <parameterName value="@exception" />

                <dbType value="String" />

                <size value="2000" />

                <layout type="log4net.Layout.ExceptionLayout" />

            </parameter>

        </appender>

    </log4net>


    b) 应用程序中的调用

    log4net.ILog log = log4net.LogManager.GetLogger("aaa");

    //写Error级别的日志信息

    log.Error("输出Error级别的日志信息")

    //写Info级别的日志信息

    log.Info("输出Info级别的日志信息");


    3、输出介质为控制台 

    a) 配置文件中的配置

    <configSections>

    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />

    </configSections>

        <log4net>

            <root>

            <!--这里设置了在系统中日志记录的级别,如果在系统中需要记录的级别小于                此处设置的级别则日志不作记录-->

                <level value="ALL" />

                <!--定义了日志输出的介质的类型,可定义多种输出介质-->

                <appender-ref ref="ConsoleAppender" />

           </root>

           <!--输出至控制台-->

           <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender" >

           <!--该配置项参数指明输出信息的布局或格式-->

            <layout type="log4net.Layout.PatternLayout">

                <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />

            </layout>

        </appender>

    </log4net>

    b) 应用程序中的调用

    log4net.ILog log = log4net.LogManager.GetLogger("aaa");

    //写Error级别的日志信息

    log.Error("输出Error级别的日志信息")

    //写Info级别的日志信息

    log.Info("输出Info级别的日志信息");

    4、输出介质为本地机器的应用程序事件日志

    a) 配置文件中的配置

    <configSections>

    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />

    </configSections>

    <log4net>

        <root>

        <!--这里设置了在系统中日志记录的级别,如果在系统中需要记录的级别小于                此处设置的级别则日志不作记录-->

            <level value="ALL" />

            <!--定义了日志输出的介质的类型,可定义多种输出介质-->

            <appender-ref ref="EventLogAppender" />

       </root>

       <!--输出至Event Log服务-->

       <appender name="EventLogAppender" type="log4net.Appender.EventLogAppender">

       <!--该配置项参数指明输出信息的布局或格式-->

            <layout type="log4net.Layout.PatternLayout">

                <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />

            </layout>

       </appender>

    </log4net>

    b) 应用程序中的调用

    log4net.ILog log = log4net.LogManager.GetLogger("aaa");

    //写Error级别的日志信息

    log.Error("输出Error级别的日志信息")

    //写Info级别的日志信息

    log.Info("输出Info级别的日志信息");           

    5、其他

    其他的输出介质这里就不再介绍了,如有需要可参照相关资料

    在使用Log4Net的日志的时候有几点需要注意:

  • 如果在配置文件中的<root>节点下的配置了多个输出介质即有多个

        <appender-ref ref="***" />,那么你所配置的多个输出介质的都将记入相应日志信息

  • 由于我们在应用系统的开发中,某些日志要求达到Error或其他级别时才被记录,介于这种要求,我们需要自己定义一个级别,如下(在配置文件的<root>下加入):

        <!--定义个别日志写入的级别-->

        <logger name="main">

            <level value="Error"></level>

        </logger>

    调用:

  //指定配置的Logger的名称

  log4net.ILog log = log4net.LogManager.GetLogger("main");

  //写Error级别的日志信息

   log.Error("输出Error级别的日志信息")

    //写Info级别的日志信息

    log.Info("输出Info级别的日志信息");


 

(本篇Blog的 Word下载)

转载于:https://www.cnblogs.com/shimeng3344518/archive/2007/04/19/719381.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Log4Net 日志管理 的相关文章

  • 跨境电商三大趋势已经涌现

    在过去的几年里 跨境电商在推动外贸增长中发挥了至关重要的作用 成为了引领行业发展的强大引擎 然而 随着2024年的到来 跨境电商行业又站在了崭新的起点 准备攀登新的发展高峰 数据显示 得益于经济的逐步复苏 未来三年跨境电商行业预计将以16
  • 【计算机开题报告】 医药信息管理系统

    一 选题依据 简述国内外研究现状 生产需求状况 说明选题目的 意义 列出主要参考文献 1 研究背景 随着医药事业的不断壮大 相关单位对于医药信息的管理变得越来越重要 传统的手工管理效率低 易出错 费时费力 不能及时精确的收集 传递 存储 加
  • 【计算机开题报告】家具销售库存管理信息系统

    一 选题的目的 意义及相关研究动态和自己的见解 随着当今社会信息化的发展 电子自动化办公越来越为各人所重视 它能有效地收集 处理各种信息 极大地提高了办事效率 而计算机技术各种软件工作平台不断的发展 又为电子自动化办公的实现提供了良好的前景
  • Nexus5596交换机支持3层需要的子卡

    3层子卡 nexus5596如果没有这块子卡 无法支持3层特性 TEST Cisco N5596 1 show modu Mod Ports Module Type Model Status 1 48 O2 32X10GBase T 16X
  • 内网穿透的应用-使用Net2FTP轻松部署本地Web网站并公网访问管理内网资源

    文章目录 1 前言 2 Net2FTP网站搭建 2 1 Net2FTP下载和安装 2 2 Net2FTP网页测试 3 cpolar内网穿透 3 1 Cpolar云端设置 3 2 Cpolar本地设置
  • 【Mysql】InnoDB 引擎中的页目录

    一 页目录和槽 现在知道记录在页中按照主键大小顺序串成了单链表 那么我使用主键查询的时候 最顺其自然的办法肯定是从第一条记录 也就是 Infrimum 记录开始 一直向后找 只要存在总会找到 这种在数据量少的时候还好说 一旦数据多了 遍历耗
  • 【计算机毕业设计】出租车管理系统

    现代经济快节奏发展以及不断完善升级的信息化技术 让传统数据信息的管理升级为软件存储 归纳 集中处理数据信息的管理方式 本出租车管理系统就是在这样的大环境下诞生 其可以帮助管理者在短时间内处理完毕庞大的数据信息 使用这种软件工具可以帮助管理人
  • 【计算机毕业设计】航空信息管理系统

    传统信息的管理大部分依赖于管理人员的手工登记与管理 然而 随着近些年信息技术的迅猛发展 让许多比较老套的信息管理模式进行了更新迭代 飞机票信息因为其管理内容繁杂 管理数量繁多导致手工进行处理不能满足广大用户的需求 因此就应运而生出相应的航空
  • 【计算机毕业设计】学生就业管理系统

    如今社会上各行各业 都喜欢用自己行业的专属软件工作 互联网发展到这个时候 人们已经发现离不开了互联网 新技术的产生 往往能解决一些老技术的弊端问题 因为传统学生就业信息管理难度大 容错率低 管理人员处理数据费工费时 所以专门为解决这个难题开
  • 图解python | 字符串及操作

    1 Python元组 Python的元组与列表类似 不同之处在于元组的元素不能修改 元组使用小括号 列表使用方括号 元组创建很简单 只需要在括号中添加元素 并使用逗号隔开即可 tup1 ByteDance ShowMeAI 1997 202
  • 通俗易懂,十分钟读懂DES,详解DES加密算法原理,DES攻击手段以及3DES原理

    文章目录 1 什么是DES 2 DES的基本概念 3 DES的加密流程 4 DES算法步骤详解 4 1 初始置换 Initial Permutation IP置换 4 2 加密轮次 4 3 F轮函数 4 3 1 拓展R到48位 4 3 2
  • 基于java的饮食分享平台系统设计与实现

    基于java的饮食分享平台系统设计与实现 I 引言 A 研究背景和动机 近年来 随着人们生活水平的提高和健康意识的增强 饮食健康已经成为越来越多人的关注焦点 因此 一个方便快捷的饮食分享平台就显得尤为重要 基于Java的饮食分享平台系统设计
  • 电商数据api接口商品评论接口接入代码演示案例

    电商数据API接口商品评论 接口接入入口 提高用户体验 通过获取用户对商品的评论 商家可以了解用户对商品的满意度和需求 从而优化商品和服务 提高用户体验 提升销售业绩 用户在购买商品前通常会查看其他用户的评论 以了解商品的实际效果和质量 商
  • 【计算机毕业设计】电影播放平台

    电影播放平台采用B S架构 数据库是MySQL 网站的搭建与开发采用了先进的java进行编写 使用了springboot框架 该系统从两个对象 由管理员和用户来对系统进行设计构建 主要功能包括 个人信息修改 对用户 电影分类 电影信息等功能
  • 【计算机毕业设计】二手图书交易系统

    随着世界经济信息化 全球化的到来和互联网的飞速发展 推动了各行业的改革 若想达到安全 快捷的目的 就需要拥有信息化的组织和管理模式 建立一套合理 动态的 交互友好的 高效的二手图书交易系统 当前的信息管理存在工作效率低 工作繁杂等问题 基于
  • Oracle EBS AP发票导入 API Rejection List 第二部分

    Oracle EBS AP发票导入 API Rejection List 第二部分 The report lists the reason the invoice could not be imported and prints a bri
  • 30天精通Nodejs--第二十天:express-操作mysql

    目录 前言 安装依赖并配置MySQL连接 安装mysql2库 配置连接信息 在Express应用中使用MySQL 结合Express路由实现CRUD操作 整合到主应用 结语 前言 在Node js中使用Expre
  • 毕业设计:基于python人脸识别系统 LBPH算法 sqlite数据库 (源码)✅

    博主介绍 全网粉丝10W 前互联网大厂软件研发 集结硕博英豪成立工作室 专注于计算机相关专业 毕业设计 项目实战6年之久 选择我们就是选择放心 选择安心毕业 感兴趣的可以先收藏起来 点赞 关注不迷路 毕业设计 2023 2024年计算机毕业
  • SAP ERP系统是什么?SAP好用吗?

    A公司是一家传统制造企业 公司曾先后使用过数个管理软件系统 但各部门使用的软件都是单独功能 导致企业日常管理中数据流与信息流相对独立 形成了 信息孤岛 随着公司近年业务规模的快速发展以及客户数量的迅速增加 企业原有的信息系统在销售预测及生产
  • 光波导结构

    摘要 增强现实和混合现实 AR MR 领域的新应用引起了人们对带有光栅区域的光波导系统的越来越多的关注 这些光波导系统用于输入和输出耦合以及扩瞳目的 VirtualLab Fusion为这类系统的仿真和设计提供了几个强大的工具 其中一个是具

随机推荐

  • 基于MATLAB手写体数字识别程序设计

    基于MATLAB手写体数字识别程序设计 手写体识别由于其实用性 一直处于研究进步的阶段 本文主要针对的是对0 9十个手写数字体脱机识别 在Matlab中对样本部分为进行16特征的提取 分别采用最小距离法 最近邻法 KNN法以及BP神经网络算
  • UNIX网络编程-recv、send、read、write之间的联系与区别

    原文链接 http www cnblogs com mhscn p 3911284 html include
  • 在centos7中安装docker

    一 前置条件 64 bit 系统 kernel 3 10 CentOS 7 1 检查 使用 uname r 检查 kernel 版本 uname r 3 10 0 327 el7 x86 64 二 安装 yum安装方式 1 使用 sudo
  • Hdfs下载报错,(null) entry in command string: null chmod 0644问题的解决

    解决 缺少系统文件hadoop dll文件 1 下载hadoop dll文件 2 把文件放在 windows system32目录下
  • python 根据年份,月份信息显示此月份天数

    1 普通方法 2 year int input 请输入年份 3 month int input 请输入月份 1 12 4 if month 2 5 if year 4 0 and year 100 0
  • Qt QtCreator 所有版本官方下载地址

    直接跳过输入账号 选择所需版本 废话不多说 直接上链接 1 所有版本QT下载地址 http download qt io archive qt 2 所有Qt Creator下载地址 http download qt io archive q
  • Unity知识点详解面试题大全

    1 请简述值类型与引用类型的区别 答 区别 1 值类型存储在内存栈中 引用类型数据存储在内存堆中 而内存单元中存放的是堆中存放的地址 2 值类型存取快 引用类型存取慢 3 值类型表示实际数据 引用类型表示指向存储在内存堆中的数据的指针和引用
  • tinystl实现(第二十步:string实现)

    经过长时间的学习终于可以开始tinystl的仿 chao 写工作了 本文参考了这位大神的github 坦白讲我只是补充了注释 因为tinystl的代码真的非常经典而我又没什么这种大型项目的经验 所以只能这样做 不过相信能够有助于大家的学习
  • Windows脚本对最后修改时间超过24小时的文件进行处理

    这次我接到一个任务 是写一个windows上运行的脚本 讲某个文件夹下最后修改时间超过24小时的文件移到另一个文件夹 然后在判断有生成的文件超过十分钟的关闭一个程序再启动它 上网搜了一下 有很多相关的 比如说把最后修改时间的文件超过一天的删
  • 第一章 开发环境的配置

    1 1 操作系统的选择 常见的操作系统有 Windows Linux 和maxOS 大部分生产环境所用到的操作系统是Liunx 这使得它具有天然的开发优势 本书也将使用Linux操作系统作为学习环境 书中大部分软件安装 环境配置和案例将以L
  • 设计randompool结构

    哈希表是get每一个key的value 而本题没有value 只有key 我们准备两张哈希表 以及一个变量 size 一个表存放某 key 的标号 另一个表根据根据标号取某个key 如下图所示 A是第0个进来的 B是第二个进来的 我们现在先
  • 仿中国婚博会微信小程序

    仿中国婚博会微信小程序 app json pages pages index index pages cash cash pages marry marry pages community community pages me me pag
  • react 全局挂载组件

    在index js 文件中导入react需要挂载的组件 import message from antd 全局挂载组件 React message function arg 默认部分参数 const type success content
  • js一道this笔试题

    JS this阿里笔试面试题 代码 1 this 谁调用就指向谁 2 在对象中this为对象本身 3 直接调用this为window var name 222 var a name 111 say function console log
  • 如何在Debian(kali)中配置代理(agent)服务器?

    开始搭建代理服务器 首先我参考如下文章进行搭建代理服务器 步骤每一个命令都执行过报了各种错 找了博客 目前尚未开始 我已经知道我的路很长 很难走呀 加油 go go go 第一个教程 第二个教程 Ubuntu Debian CentOS搭建
  • MySQL数据查询 - 简单查询

    简单查询 在MySQL中可以通过SQL语句来实现基本数据查询 SQL语句可以通过如下多种使用 查询所有字段数据 查询指定字段数据 避免重复数据查询 对结果进行排序和分组等查询 数据库中可能包含数量庞大的表 表中可能包含无数的记录 如果没有两
  • 掌握 Effective C++ : 条款01

    背景 Effective C 是每个 C 程序员都应该读的经典之作 书中涵盖了 C 编程中的一系列最佳实践 包括了面向对象设计 模板 STL 异常处理等方面的内容 由于 C 的发展非常迅速 书中的某些内容可能已经过时 但依然是值得好好学习的
  • abc300.com站点被注入脚本

    在进行abc300 com的页面SEO时发现 所有页面受到注入攻击 全部asp页最后被添加一页 弄了1个多小时 大部份页面被清除 目前已经获得www hulijie com的ftp 222 33 63 206 用户名admin 密码尚需分析
  • postgresql 高可用框架对比

    PostgreSQL 的高可用框架有许多种 每种都有其独特的优缺点 下面是一些常见的高可用框架的对比 Pgpool II 这是一个开源的负载均衡和数据库代理 支持主从复制和读写分离 它的优点在于易于安装和使用 缺点是不支持实时备份 Repm
  • Log4Net 日志管理

    Log4Net日志管理 A Log4Net日志管理 Log4Net的日志级别如下 级别 允许的方法 Boolean属性 优先级别 OFF Highest FATAL void Fatal bool IsFatalEnabled RROR v