java 两种日志的使用方式

(1)第一种是在配置文件中,进行配置,对指定的类(或者包)都有对应的日志输出到固定的文件里。

     使用方式: 

      a.maven里配置:slf4j-api-1.7.2.jar

      b.在resource目录里配置log4j.properties

  

,配置的内容如下:

#配置根logger,所有的都要输出,第一个是日志输出的级别
log4j.rootLogger=INFO,RollingFile
#配置日志记录的优先级 从高到低一次是 ERROR WARN INFO DEBUG,这里配置为DEBUG,高于DEBUG的所有级别都会打印

#定义名为log为RollingFile的的输出类型,由于RollingFile配置为rootlogger,因此会将所有的输出日志内容都在RollingFile里重复输出一遍
log4j.appender.RollingFile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.RollingFile.File=D://logs//root.log
log4j.appender.RollingFile.layout=org.apache.log4j.PatternLayout
log4j.appender.RollingFile.layout.ConversionPattern=[%-5p] [%d{yyyy-MM-dd HH:mm:ss}] [%C{1}:%M:%L] %m%n

#RollingFile
log4j.appender.LogTest=org.apache.log4j.DailyRollingFileAppender
log4j.appender.LogTest.File=D://logs//LogTest.log
log4j.appender.LogTest.layout=org.apache.log4j.PatternLayout
log4j.appender.LogTest.layout.ConversionPattern=[%-5p] [%d{yyyy-MM-dd HH:mm:ss}] [%C{1}:%M:%L] %m%n
#下列为指定的包名,也可以指定对应的类
log4j.logger.com.iqiyi.search.api=INFO,LogTest

测试使用:

package com.iqiyi.search.api;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class LogTest {
    static Logger logger = LoggerFactory.getLogger(LogTest.class);

    public static void main(String[] args) {
      logger.info("[这是一条测试数据:{}]","test1");
    }
}
(2)有时,我们想在多线程环境为每个线程都配置一个日志,这时就不能继续采用第一种方法了,我的解决方法是使用log4j-1.2.17.在代码级别里进行控制。

import org.apache.log4j.*;

public class DataTransferLogger {
    private static final String LOGGER_FILE_DIR=ESConfigure.LOGGER_FILE_DIR;
    public  static Logger getLogger(String name)
    {
        DailyRollingFileAppender fa = new DailyRollingFileAppender();//每天生成一个日志文件
        fa.setName(name);
        fa.setFile(LOGGER_FILE_DIR + name);
        //监控日志,每天生成一个
        fa.setDatePattern("'.'yyyy-MM-dd");
        fa.setLayout(new PatternLayout("[%-5p] [%d{yyyy-MM-dd HH:mm:ss}]%m%n"));
        fa.setThreshold(Level.INFO);
        fa.setAppend(true);
        fa.activateOptions();
        Logger logger= LogManager.getLogger(name);
        logger.addAppender(fa);
        return logger;
    }
    public  static Logger getThreadLogger(Long startId,Long endId,boolean isHistory)
    {
        String prefix="";
        if(isHistory)
        {
           prefix="history-";
        }else {
            prefix="";
        }
        String name=prefix+startId+"-"+endId+".log";
        DailyRollingFileAppender fa = new DailyRollingFileAppender();
        fa.setName(name);
        fa.setFile(LOGGER_FILE_DIR + name);
        fa.setLayout(new PatternLayout("[%d{yyyy-MM-dd HH:mm:ss}]%m%n"));
        //由于生产环境下写入性能较快,设置为每隔一个小时天生成一个文件
        fa.setDatePattern("'.'yyyy-MM-dd-HH");
        fa.setThreshold(Level.INFO);
        fa.setAppend(true);
        fa.activateOptions();
        Logger logger= LogManager.getLogger(name);
        logger.addAppender(fa);
        return logger;
    }

    public static void main(String[] args) {
        Logger  dlg1=DataTransferLogger.getThreadLogger(1000L,2000L,false);
        dlg1.info("aaaaaaaaaaaaaaaaaa");


    }
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值