文章目录
日志
- 日志记信息,需要三个组件
Logger 日志记录器
Appender 指定输出位置 ---->Handle
Layout 输出的格式------>Formatter
1. JDK原生自带的日志记录器
1.1. 默认日志级别
/**
* JDK原生自带日志记录器,默认使用日志级别
* @author yxk
* Date 2021/4/8 15:37
*/
@Test
public void test01() {
//日志记录器
Logger logger = Logger.getLogger("com.zy.log.TestLog");
logger.info("普通正常信息");
System.out.println("===================");
logger.severe("严重信息");
logger.warning("警告信息");
logger.info("普通正常信息");
//普通信息以下不显示
logger.config("配置信息");
logger.fine("友好信息");
logger.finer("更友好信息");
logger.finest("最友好信息");
}
默认打印info及以上级别信息
1.2. 自定义日志级别
/**
* 自定义日志级别
* @author yxk
* Date 2021/4/8 15:37
*/
@Test
public void test02() {
//1.构建日志记录器-->可以指定包或类
Logger logger = Logger.getLogger("com.zy");
//2.关闭系统默认配置 日志顶级父类RootLogger 输出的位置在控制台,级别为INFO以下的不输出
logger.setUseParentHandlers(false);
//3.构建日志输出位置--->控制台
ConsoleHandler consoleHandler = new ConsoleHandler();
//构建日志输出位置--->文件
//FileHandler fileHandler = new FileHandler("D:\\IDEA\\log\\1.log");
//4.指定日志输出的格式
SimpleFormatter formatter = new SimpleFormatter();
//5.关联三个组件
consoleHandler.setFormatter(formatter);
logger.addHandler(consoleHandler);
//6.设置日志输出级别
logger.setLevel(Level.ALL);//记录全部
consoleHandler.setLevel(Level.ALL);//控制台打印全部
System.out.println("==============");
logger.severe("严重信息");
logger.warning("警告信息");
logger.info("普通正常信息");
logger.config("配置信息");
logger.fine("友好信息");
logger.finer("更友好信息");
logger.finest("最友好信息");
}
1.3. 配置文件logging.properties
#输出位置:控制台和文件
handlers= java.util.logging.ConsoleHandler,java.util.logging.FileHandler
#日志级别
.level= INFO
# 日志输出到文件中的配置
# %h指的是C://User//admin ==>{user.home}
# %u指的是数字,依据下面的count 0-9
java.util.logging.FileHandler.pattern = %h/javaLog/java%u.log
#可以存放50000个字节
java.util.logging.FileHandler.limit = 50000
java.util.logging.FileHandler.count = 10
java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter
#设置控制台打印的日志级别
java.util.logging.ConsoleHandler.level = INFO
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
/**
* 自定义properties配置文件logging.properties
* @author yxk
* Date 2021/4/8 16:20
*/
@Test
public void test03() throws IOException {
//1.读取配置文件
InputStream inputStream = TestLog.class.getClassLoader().getResourceAsStream("logging.properties");
//2.构建日志管理器
LogManager logManager = LogManager.getLogManager();
//3.读取io流的配置信息
logManager.readConfiguration(inputStream);
//4.构建日志记录器
Logger logger = Logger.getLogger("com.zy.log");
//5.日志输出
logger.severe("严重信息");
logger.warning("警告信息");
logger.info("普通正常信息");
System.out.println(1/0);
}
2. Log4j
- 依赖
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
</dependency>
2.1. 使用Log4j默认的配置
@Test
public void test01() {
//1.初始化日志信息,使用默认的配置
BasicConfigurator.configure();
//2.构建log4j日志记录器,Logger的包的apache的,不是jdk的
Logger logger = Logger.getLogger(TestLog4j.class);
//3.日志输出
logger.fatal("致命错误信息");
logger.error("错误信息");
logger.warn("警告信息");
logger.info("普通信息");
logger.debug("debug信息");
logger.trace("跟踪信息");
Log4j日志等级分为6级:fatal,error,warn,info,debug,trace
默认打印debug及以上级别的信息
2.2. 自定义配置log4j.properties
- 1.1日志输出到控制台
#日志输出位置 Appender
#日志记录器 = 日志输出等级,日志输出位置
log4j.rootLogger = WARN,console
#指定为控制台
log4j.appender.console = org.apache.log4j.ConsoleAppender
#日志输出格式 Layout
log4j.appender.console.layout = org.apache.log4j.SimpleLayoutt
- 1.2日志输出到文件
#日志输出位置 Appender
#日志记录器 = 日志输出等级,日志输出位置
log4j.rootLogger = WARN,file
#指定日志输出到文件
#RollingFileAppender表示文件存储满了才会产生新的日志文件
log4j.appender.file = org.apache.log4j.RollingFileAppender
#默认以字节(B)为单位,也可以指定单位
log4j.appender.file.maxFileSize = 10MB
#日志输出的具体位置
log4j.appender.file.file = D:/javaLog/log4j.log
#指定日志文件的数量,超过10时会覆盖旧的日志文件
log4j.appender.file.maxBackupIndex = 10
#设置编码字符集
log4j.appender.file.encoding = UTF-8
#日志输出格式 Layout
#有4种格式,xml,html,simple,pattern
#pattern表示自定义格式,才有最后一句
log4j.appender.file.layout = org.apache.log4j.PatternLayout
# %d 日期 date
# [%t] 指当前的线程名 thread
# %p 输出优先级 privilege
# %c 类的全限定类名 class
# %m 输出日志中指定的日志信息
# %n 换行符
log4j.appender.file.layout.conversionPattern = %d [%t] %p %c %x - %m%n
log4j.appender后面的第一个单词必须与log4j.rootLogger等号右边的第二个单词一致
- 2.测试
@Test
public void test04() {
//2.构建log4j日志记录器
Logger logger = Logger.getLogger(TestLog4j.class);
//3.日志输出
logger.fatal("致命错误信息");
logger.error("错误信息");
logger.warn("警告信息");
logger.info("普通信息");
logger.debug("debug信息");
logger.trace("跟踪信息");
}
#日志输出位置 Appender
log4j.rootLogger = WARN,file,console
#指定日志输出到文件
log4j.appender.file = org.apache.log4j.RollingFileAppender
log4j.appender.file.maxFileSize = 10MB
log4j.appender.file.file = D:/javaLog/log4j.log
log4j.appender.file.maxBackupIndex = 10
log4j.appender.file.encoding = UTF-8
log4j.appender.file.layout = org.apache.log4j.PatternLayout
log4j.appender.file.layout.conversionPattern = %d{yyyy-MM-dd HH:mm:ss} [%t] %p %c %x - %m%n
#指定日志输出到控制台
log4j.appender.console = org.apache.log4j.ConsoleAppender
log4j.appender.console.layout = org.apache.log4j.PatternLayout
log4j.appender.console.layout.conversionPattern = %d{yyyy-MM-dd HH:mm:ss} [%t] %p %c %x - %m%n
只要引入依赖和配置好og4j.properties,在项目启动时就会自动扫描日志配置文件
- 根据日志级别输出到不同的文件
#日志输出位置 Appender
#日志记录器 = 日志输出等级,日志输出位置
log4j.rootLogger = INFO,console,info,warn,error,fatal
#指定输出到控制台
log4j.appender.console = org.apache.log4j.ConsoleAppender
log4j.appender.console.layout = org.apache.log4j.PatternLayout
log4j.appender.console.layout.conversionPattern = %d{yyyy-MM-dd HH:mm:ss} [%t] %p %c %x - %m%n
#指定为文件
#只输出INFO级别的日志到指定文件
log4j.appender.info = org.apache.log4j.RollingFileAppender
log4j.appender.info.maxFileSize = 10MB
log4j.appender.info.file = D:/javaLog/info/log4j.log
log4j.appender.info.Threshold = INFO
log4j.appender.info.maxBackupIndex = 10
log4j.appender.info.encoding = UTF-8
log4j.appender.info.layout = org.apache.log4j.PatternLayout
log4j.appender.info.layout.conversionPattern = %d{yyyy-MM-dd HH:mm:ss} [%t] %p %c %x - %m%n
log4j.appender.info.filter.F1=org.apache.log4j.varia.LevelRangeFilter
log4j.appender.info.filter.F1.LevelMin=INFO
log4j.appender.info.filter.F1.LevelMax=INFO
#只输出WARN级别的日志到指定文件
log4j.appender.warn = org.apache.log4j.RollingFileAppender
log4j.appender.warn.maxFileSize = 10MB
log4j.appender.warn.file = D:/javaLog/warn/log4j.log
log4j.appender.warn.Threshold = WARN
log4j.appender.warn.maxBackupIndex = 10
log4j.appender.warn.encoding = UTF-8
log4j.appender.warn.layout = org.apache.log4j.PatternLayout
log4j.appender.warn.layout.conversionPattern = %d{yyyy-MM-dd HH:mm:ss} [%t] %p %c %x - %m%n
log4j.appender.warn.filter.F1=org.apache.log4j.varia.LevelRangeFilter
log4j.appender.warn.filter.F1.LevelMin=WARN
log4j.appender.warn.filter.F1.LevelMax=WARN
#只输出ERROR级别的日志到指定文件
log4j.appender.error = org.apache.log4j.RollingFileAppender
log4j.appender.error.maxFileSize = 10MB
log4j.appender.error.file = D:/javaLog/error/log4j.log
log4j.appender.error.Threshold = ERROR
log4j.appender.error.maxBackupIndex = 10
log4j.appender.error.encoding = UTF-8
log4j.appender.error.layout = org.apache.log4j.PatternLayout
log4j.appender.error.layout.conversionPattern = %d{yyyy-MM-dd HH:mm:ss} [%t] %p %c %x - %m%n
log4j.appender.error.filter.F1=org.apache.log4j.varia.LevelRangeFilter
log4j.appender.error.filter.F1.LevelMin=ERROR
log4j.appender.error.filter.F1.LevelMax=ERROR
#只输出FATAL级别的日志到指定文件
log4j.appender.fatal = org.apache.log4j.RollingFileAppender
log4j.appender.fatal.maxFileSize = 10MB
log4j.appender.fatal.file = D:/javaLog/fatal/log4j.log
log4j.appender.fatal.Threshold = FATAL
log4j.appender.fatal.maxBackupIndex = 10
log4j.appender.fatal.encoding = UTF-8
log4j.appender.fatal.layout = org.apache.log4j.PatternLayout
log4j.appender.fatal.layout.conversionPattern = %d{yyyy-MM-dd HH:mm:ss} [%t] %p %c %x - %m%n
log4j.appender.fatal.filter.F1=org.apache.log4j.varia.LevelRangeFilter
log4j.appender.fatal.filter.F1.LevelMin=FATAL
log4j.appender.fatal.filter.F1.LevelMax=FATAL