• 【Java】Java日志框架Logback的简单例子


    常用的日志框架

    • SLF4J,全称Simple Logging Facade for Java,即Java简单日志外观框架,顾名思义,它并非具体的日志实现,而是日志外观框架
    • java.util.logging,是JDK自带的一个日志实现框架
    • Logback,一个流行的日志实现框架
    • LOG4J,一个流行的日志实现框架

    java.util.logging

    java.util.logging,JDK自带的一个日志实现框架,我们并没有在项目中使用,但在个人练习中常使用来打印日志,来个最简单的例子。

    import java.util.logging.Logger;
    
    public class HowToUse {
    
        public static void main(String[] args) {
             Logger logger = Logger.getLogger("HowToUse"); // 默认级别info
             
             /* 各打印级别 */
             logger.severe("severe");
             logger.warning("warning");
             logger.info("info");
             logger.config("config");
             logger.fine("fine");
             logger.finer("finer");
             logger.finest("finest");
        }
    
    }
    

    日志:

    五月 29, 2017 7:44:40 上午 HowToUse main
    严重: severe
    五月 29, 2017 7:44:41 上午 HowToUse main
    警告: warning
    五月 29, 2017 7:44:41 上午 HowToUse main
    信息: info
    

    Logback

    一款基于SLF4J外观的日志实现,用POM.XML引入Logback你会发现依赖并引入SLF4J

    <dependency>
    	<groupId>ch.qos.logback</groupId>
    	<artifactId>logback-classic</artifactId>
    	<version>1.1.11</version>
    	<scope>test</scope>
    </dependency>
    

    Logback的配置中有几个比较重要,loogerrootappender,结构图如下:

    一个简单的配置文件:

    <configuration scan="true" scanPeriod="60 seconds" debug="false">
        <property name="Application_Name" value="Logback-Exercies" /> <!-- 公用属性 -->
        <contextName>${Application_Name}</contextName> <!-- 上下文名称 -->
    
        <!-- 控制台输出 -->
        <appender name="CONSOLE_OUT" class="ch.qos.logback.core.ConsoleAppender">
            <encoder>
                <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{35} - %msg %n
                </pattern>
            </encoder>
        </appender>
    
        <!-- 滚动日志文件输出 -->
        <appender name="ROLLING_FILE_OUT"
            class="ch.qos.logback.core.rolling.RollingFileAppender">
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <fileNamePattern>D:/logs/${Application_Name}.%d{yyyy-MM-dd}.log
                </fileNamePattern>
                <maxHistory>30</maxHistory>
            </rollingPolicy>
            <encoder>
                <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{35} - %msg %n
                </pattern>
            </encoder>
        </appender>
        
        <!-- 专门为com.nicchagil包下定义的输出 -->
        <appender name="SPECIFIED_FILE_OUT" class="ch.qos.logback.core.FileAppender">
            <file>D:/logs/${Application_Name}_Specified.log</file>
            <append>true</append>
            <encoder>
                <pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n
                </pattern>
            </encoder>
        </appender>
    
        <!-- 根logger的定义 -->
        <root level="INFO">
            <appender-ref ref="CONSOLE_OUT" />
            <appender-ref ref="ROLLING_FILE_OUT" />
        </root>
    
        <!-- 为com.nicchagil包专属logger的定义 -->
        <logger name="com.nicchagil" level="DEBUG">
            <appender-ref ref="SPECIFIED_FILE_OUT" />
        </logger>
        
    </configuration>
    

    声明Logger:

    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    
    private final Logger logger = LoggerFactory.getLogger(MySimpleJob.class);
    

    LOG4J

    LOG4J,一个流行的日志实现框架,很多公司在使用,这里不讨论。
    如使用它,则引用:

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>1.7.25</version>
    </dependency>
    
  • 相关阅读:
    Vue目录查询
    Vue框架学习(五)
    Vue框架学习(四)
    Vue框架学习(三)
    Vue框架学习(二)
    Vue框架学习(一)
    python中定义函数和参数的传递问题
    数据处理
    关于在程序中 文件新生成 在用os.system()程序对新生成的文件处理 举个栗子 如下:
    c++2008 并行配置文件和获取字典的所有key的方法
  • 原文地址:https://www.cnblogs.com/nick-huang/p/6918091.html
Copyright © 2020-2023  润新知