日志框架

1、NLog

    <targets>
      <!--记录日志到文件-->
      <target xsi:type="File" name="fileLog"
                fileName="${basedir}/LogFile/${shortdate}.log"
            layout="${date:format=yyyy-MM-dd HH\:mm\:ss}|${level:uppercase=true}|${logger}${newline}${message}${newline}${newline}" />

      <!--记录日志到SqlServer数据库-->
      <target name="dbLog" xsi:type="Database">
        <connectionString>Data Source=localhost;Initial Catalog=Demo;Persist Security Info=True;User ID=sa;Password=123456789;</connectionString>
        <dbProvider>System.Data.SqlClient</dbProvider>
        <commandText>
          INSERT INTO dbo.Log
          (Logged,Level,Message,Username,ServerName,Logger)
          VALUES
          (@Logged,@Level,@Message,@Username,@ServerName,@Logger)
        </commandText>
        <parameter name="@logged" layout="${date}" />
        <parameter name="@level" layout="${level}" />
        <parameter name="@message" layout="${message}" />
        <parameter name="@username" layout="${identity}" />
        <parameter name="@serverName" layout="${machinename}" />
        <parameter name="@logger" layout="${logger}" />
      </target>

      <!--发送邮件日志-->
      <target xsi:type="Mail" name ="mailLog"
              smtpServer="smtp.gmail.com"
              smtpPort="587"
              smtpAuthentication="Basic"
              smtpUsername="邮箱用户名"
              smtpPassword="邮箱密码"
              enableSsl="true"
              addNewLines="true"
              from="发件人"
              to="收件人(逗号分隔)"
              cc="抄送"
              html="true"
              encoding="UTF-8"
              subject="邮件主题"
              header="************************************************************************"
              body="${newline}
                  时间:${date:format=yyyy-MM-dd HH\:mm\:ss} ${newline}${newline}
                  级别:${level:uppercase=true} ${newline}${newline}
                  Logger:${logger} ${newline}${newline}
                  详情:${message} ${newline}${newline}"
              footer="************************************************************************"
        />
    </targets>
    <rules>
      <logger name="*" minLevel="Debug" maxlevel="Fatal" writeTo="fileLog" />
      <logger name="*" minLevel="Debug" maxlevel="Fatal" writeTo="dbLog" />
      <logger name="*" minLevel="Debug" maxlevel="Fatal" writeTo="mailLog" />
    </rules>
  </nlog>

2、Log4Net

<?xml version="1.0"?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
  </configSections>
  <!--日志记录组建配置-->
  <log4net>
    <!-- Console部分log输出格式的设定 -->
    <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="[%-5p]|%d|%logger|[%ndc] %n%m%n" />
      </layout>
    </appender>
    <!-- 日志文件部分log输出格式的设定 -->
    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
      <file value="Logs\" />
      <!--多线程时采用最小锁定-->
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
      <!--是否追加到文件,默认为true,通常无需设置-->
      <appendToFile value="true" />
      <rollingStyle value="Date" />
      <!--日期的格式,每天换一个文件记录,如不设置则永远只记录一天的日志,需设置-->
      <datePattern value="yyyyMMdd‘.txt‘" />
      <staticLogFileName value="false" />
      <layout type="log4net.Layout.PatternLayout">
        <header value="" />
        <!--[%-5p]:日志级别,格式化为5个宽度 [%d]日志时间 [%logger]:日志记录者 [%n]:换行 [%m]:日志内容-->
        <ConversionPattern value="[%-5p]|%d|%logger|[%ndc] %n%m%n%n" />
      </layout>
    </appender>

    <!-- Setup the root category, add the appenders and set the default level -->
    <root>
      <!--控制级别,由低到高: ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF-->
      <!--比如定义级别为INFO,则INFO级别向下的级别,比如DEBUG日志将不会被记录-->
      <!--如果没有定义LEVEL的值,则缺省为DEBUG-->
      <level value="DEBUG" />
      <!--<appender-ref ref="ConsoleAppender" />-->
      <appender-ref ref="RollingLogFileAppender" />
    </root>
  </log4net>
</configuration>

时间: 2024-10-16 08:45:09

日志框架的相关文章

Java 日志框架终极教程

概述 对于现代的 Java 应用程序来说,只要被部署到真实的生产环境,其日志的重要性就是不言而喻的,很难想象没有任何日志记录功能的应用程序被运行于生产环境中.日志 API 所能提供的功能是多种多样的,包括记录程序运行时产生的错误信息.状态信息.调试信息和执行时间信息等.在生产环境中,日志是查找问题来源的重要依据,应用程序运行时的产生的各种重要信息,都应该通过日志 API 来进行记录. 很多Java开发人员习惯于使用 System.out.println.System.err.println 以及

配置日志框架——Log4j

Log4j作为一个开源的优秀日志框架,被广泛使用,Hibernate和MyBatis都是支持Log4j的,我们只需要引入Log4j的jar包即可. Log4j.properties文件 log4j.rootLogger=info,appender1,appender2 //appender1,appender2这是输出的目标地址,当然可以有多个,在这里只写了两个 log4j.appender.appender1=org.apache.log4j.ConsoleAppender //指定输出类型,

Java-最常用的Java日志框架整理

前言 Java程序员,我们开发了很多Java应用程序,包括桌面应用.WEB应用以及移动应用.然而日志系统是一个成熟Java应用所必不可少的,在开发和调试阶段,日志可以帮助我们更好更快地定位bug:在运行维护阶段,日志系统又可以帮我们记录大部分的异常信息,从而帮助我们更好的完善系统.本文要来分享一些Java程序员最常用的Java日志框架组件.1.log4j – 最受欢迎的Java日志组件 Log4j是一款基于Java的开源日志组件,Log4j功能非常强大,我们可以将日志信息输出到控制台.文件.用户

Java程序员最常用的8个Java日志框架

1.Log4j – 最受欢迎的Java日志组件 Log4j是一款基于Java的开源日志组件,Log4j功能非常强大,我们可以将日志信息输出到控制台.文件.用户界面,也可以输出到操作系统的事件记录器和一些系统常驻进程.更值得一提的是,Log4j可以允许你非常便捷地自定义日志格式和日志等级,可以帮助开发人员全方位地掌控日志信息. 官方网站:http://logging.apache.org/log4j/2.x/ 下面是使用Log4j的一个简单例子: 2.gclogviewer – Java日志查看工

Spring集成Log4j日志框架

1.日志系统介绍 slf4j,即简单日志门面(Simple Logging Facade for Java),不是具体的日志解决方案,它只服务于各种各样的日志系统.简答的讲就是slf4j是一系列的日志接口,而log4j是具体实现了的日志框架. slf4j与常用日志框架绑定关系,图片来源 2.Maven导入slf4j和log4j,编辑pom.xml <!-- 导入slf4j-log4j12,依赖slf4j-api和log4j,自动导入 --> <dependency> <gro

一个简单好用的日志框架NLog

之前我介绍过如何使用log4net来记录日志,但最近喜欢上了另一个简单好用的日志框架NLog. 关于NLog和log4net的比较这里就不多讨论了,感兴趣的朋友可以参看.NET日志工具介绍和log4net vs. Nlog这两篇文章.本文主要介绍一下如何在项目中使用NLog. 在Nuget中安装NLog NLog可以直接使用Nuget安装: PM > Install-Package Nlog 使用NLog NLog的使用方式基本上和其它的Log库差不多,分为Trace.Debug.Info.Er

C/C++/C#/Python日志框架

俗话说,打得一手好log才是一个优秀的程序员. **打log的目的是为了迅速排错或在有争议时拿出证据证明自己.基于这个目的,log不在多,只要抓住一切对自己有利的信息,就可以了.** 日志框架列表 C/C++      spdlog  只需要引用头文件就可以了 C#      NLog  第三方库,性能比log4net好,支持跨平台 python       logging  自带模块

Node.js日志框架选型比較:Winston

日志对于问题定位.调试,系统性能调优至关重要,尤其是系统复杂以及在线执行的情况下. 好的开发框架都会有一个可开启关闭/可配置记录级别的日志系统.我们从下面几个方面来做选型: 1. 每行日志都须要有准确无误的时间戳 2. 日志格式easy被人理解同一时候也easy被计算机进行分析处理 3. 同意配置不同的日志输出,比方对于不同级别的日志配置不同的处理方式 基于上述的要求,有两款Node.js框架脱颖而出,各自是Bunyan和Winston. Bunyan by Trent Mick. Winsto

log4j日志框架学习

初识Log4j: log4j有三个部分: 1.loggers 负责捕获日志信息. 2.appenders  负责输出信息到不同的目的地 3.layouts 负责使用不同的样式输出日志 log4j框架中有两种对象: 核心对象:框架的支撑对象,是框架必不可少的组成部分. 支撑对象:这些都是框架可选的对象,用于提供额外重要的工作. 核心对象包括下面几种类型: logger对象,是最高的层,负责通过不同的风格转化日志信息,他提供给appender对象发布前的信息.(这里的层是指所处的位置) layout

java日志框架与日志系统

日志框架:提供日志调用的接口,实际的日志输出委托给日志系统实现. JCL(Jakarta Commons Logging):比较流行的日志框架,很多框架都依赖JCL,例如Spring等. SLF4j:提供新的API,初衷是配合Logback使用,但同时兼容Log4j. 日志系统:负责输出日志 Log4j:较早的日志系统,可以单独使用,也可配合日志框架JCL使用 Logback:Log4j的替代产品,需要配合日志框架SLF4j使用 JUL(java.util.logging):JDK提供的日志系统