一、问题:
1.spring boot 项目中已spring data jpa作为持久层,默认的日志打印用的logback,如果用log4j呢
2.默认的日志打印方式为全部在一个文件,而spring data jpa 会打印大量日志,从而日志文件很大,打不开,生成环境错误怎么解决
3.运用log4j作为日志打印,日志级别为info不会打印sql,有时候错误无法排查,debug级别又会打印很多没用的日志,怎么去掉一些没用的日志
补充(貌似logback各方面比log4j好多,但是log4就作为很久以来的日志打印工具,应该也不会差到哪里,我用logback做为日志打印,启动貌似增加了了20多秒)
接下来解决这些问题
二、解决方法:
1.在pom文件中使logback失效,并用log4j,加入以下依赖
<exclusion>起到的这个作用
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions>
<exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-log4j</artifactId> <version>1.3.8.RELEASE</version> </dependency>
2.使用循环日志,规定日志大小,这样就能够打开了,添加log4j.properties文件,springboot会自动读取的,
我们设置日志的总级别为debug,单独设置控制台的日志基本为info,如果设置控制台为debug会打印过多的日志,控制台为什么info基本会打印sql,没有搞懂
log4j.logger.org.hibernate.loader.plan.exec.process.internal.CollectionReferenceInitializerImpl=info # 排除没用的日志 log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %5p %c{1}:%L - %m%n log4j.appender.stdout.Threshold = info log4j.appender.stdout.Encoding=utf-8 #控制台输出 log4j.appender.R=org.apache.log4j.RollingFileAppender log4j.appender.R.append=true log4j.appender.R.File=d://zoo_logs/zoo_log.txt log4j.appender.R.MaxFileSize=2000KB log4j.appender.R.MaxBackupIndex=30 log4j.appender.R.Encoding=utf-8 log4j.appender.R.layout=org.apache.log4j.PatternLayout log4j.appender.R.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%c] [%p] - %m%n ### 保存异常信息到单独文件 ### log4j.appender.D = org.apache.log4j.DailyRollingFileAppender log4j.appender.D.File = d://zoo_logs/error.log log4j.appender.D.Append = true log4j.appender.D.Encoding=utf-8 log4j.appender.D.Threshold = ERROR log4j.appender.D.layout = org.apache.log4j.PatternLayout log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
3.排除没用的日志的代码:
log4j.logger.org.hibernate.engine.internal.TwoPhaseLoad=info log4j.logger.org.hibernate.loader.plan.exec.process.internal.ResultSetProcessorImpl=info log4j.logger.org.hibernate.engine.loading.internal.CollectionLoadContext=info log4j.logger.org.hibernate.loader.Loader=info log4j.logger.org.hibernate.loader.plan.exec.process.internal.CollectionReferenceInitializerImpl=info
补充:编码格式utf-8不要大写,会不能识别的