logback 日志重复打印配置哪些类不打印日志

不能在控制台正常打印输出logback日志
我的图书馆
不能在控制台正常打印输出logback日志
今天在做logback日志打印的例子的时候,logback日志始终在控制台都打印不出来日志信息.经检查后发现,在控制它有这样一段信息.&&&经百度以后发现,这个信息就是导致backlog日志不能正确输入的原因.网上的解释可以查看考/jbelial/archive//2536814.html &这篇文章,讲的很详细.如何才能不输出这个信息呢,解决方法如下:在classpath根目录下添加一个文件log4j.properties&&在打印输入日志,一切都正常了.&&
TA的最新馆藏[转]&
喜欢该文的人也喜欢博客访问: 465060
博文数量: 111
博客积分: 660
博客等级: 上士
技术积分: 1796
注册时间:
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: Java
springframework中使用logback 配置日志的相对目录
前几日开发同事请求在jenkins服务器创建几个日志目录,解释说因为没有相关日志目录导致构建失败,检查构建日志发现如下错误:
Logging system failed to initialize using configuration from 'classpath:logback.xml'
java.lang.IllegalStateException: Logback configuration error detected:
ERROR in ch.qos.logback.core.rolling.RollingFileAppender[FILE] - Failed to create parent directories for [/logs/a6/a6-ss-discovery/spring.log]
ERROR in ch.qos.logback.core.rolling.RollingFileAppender[FILE] - openFile(/logs/a6/a6-ss-discovery/spring.log,true) call failed. java.io.FileNotFoundException: /logs/a6/a6-ss-discovery/spring.log (No such file or directory)
从运维角度出发,把日志放到/目录是个稳定性的隐患,所以必须解决,反馈开发同事修改,开发同事是在太忙了,答应以后修改。于是有了本文。
app目录下有bin、logs目录,要求日志集中存放在logs目录下面
如果bin下有多个可运行app,那么logs下面创建appname的二级目录
└── a6-ss-discovery
├── error.log
├── spring.log
└── system.log
修改两个文件
src/main/resources/application.yml修改以下两处:
name字段值修改实际名称
application:
name: a6-ss-discovery
path字段值修改为相对路径logs
config: classpath:logback.xml
path: ../logs/${spring.application.name}
src/main/resources/logback.xml&修改LOG_PATH的value为logs
运行mvn构建和测试
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 20.344s
[INFO] Finished at: Mon Apr 10 18:51:36 CST 2017
[INFO] Final Memory: 35M/428M
[INFO] ------------------------------------------------------------------------
运行ls命令检查logs目录(略)
阅读(905) | 评论(0) | 转发(0) |
相关热门文章
给主人留下些什么吧!~~
请登录后评论。博客分类:
在《44. Spring Boot日志记录SLF4J》章节中有关相关的介绍,这里我们在深入的了解下logback框架。
为什么要使用logback ?
——在开发中不建议使用System.out因为大量的使用会增加资源的消耗。因为使用System.out是在当前线程执行的,写入文件也是写入完毕之后才继续执行下面的程序。而使用Log工具不但可以控制日志是否输出,怎么输出,它的处理机制也是通知写日志,继续执行后面的代码不必等日志写完。
——个人推荐使用SLF4J(Simple Logging Fa?ade For Java)的logback来输出日志,其比log4j效率高。
——Spring Boot 提供了一套日志系统,logback是最优先的选择。
疑惑解答:logback,slf4j,log4j之间的关系
Slf4j是The Simple Logging Facade for Java的简称,是一个简单日志门面抽象框架,它本身只提供了日志Facade API和一个简单的日志类实现,一般常配合Log4j,LogBack,java.util.logging使用。Slf4j作为应用层的Log接入时,程序可以根据实际应用场景动态调整底层的日志实现框架(Log4j/LogBack/JdkLog...);
LogBack和Log4j都是开源日记工具库,LogBack是Log4j的改良版本,比Log4j拥有更多的特性,同时也带来很大性能提升。详细数据可参照下面地址:Reasons to prefer logback over log4j
LogBack官方建议配合Slf4j使用,这样可以灵活地替换底层日志框架。
(note: 为了优化log4j,以及更大性能的提升,Apache基金会已经着手开发了log4j 2.0, 其中也借鉴和吸收了logback的一些先进特性,目前log4j2还处于beta阶段)
Logback的结构
LogBack被分为3个组件,logback-core, logback-classic 和 logback-access.
其中logback-core提供了LogBack的核心功能,是另外两个组件的基础。
logback-classic则实现了Slf4j的API,所以当想配合Slf4j使用时,需要将logback-classic加入classpath。
logback-access是为了集成Servlet环境而准备的,可提供HTTP-access的日志接口;
Slf4j+Logback的快速实践
spring-boot默认支持logback,所以无需引用任何以来只需要,配置application.properties即可,如果要功能丰富些,则配置下logback.xml。
一、在application.properties里配置的方式:
logging.file=./springboot.log
这是最简便的方法,默认级别是info,要改级别的话还要在appliacation.properties里增加一行
logging.level.org.springframework.web=INFO
二、配置logback-spring.xml
在 src/main/resources 下面创建logback.xml (根据不同环境来定义不同的日志输出,那么取名为logback-spring.xml 即可,官方优先推荐使用-spring.*的配置方式)文件。
logback-spring.xml 文件:
&?xml version="1.0" encoding="UTF-8"?&
&configuration&
&include resource="org/springframework/boot/logging/logback/base.xml" /&
&logger name="org.springframework.web" level="INFO"/&
&/configuration&
在代码中调用:
import org.slf4j.Logger;
import org.slf4j.LoggerF
private Logger logger =
LoggerFactory.getLogger(this.getClass());
具体使用起来特别的简单,那么来解读一下配置文件。
配置文件解读:
logback-spring.xml文件:
&?xml version="1.0" encoding="UTF-8"?&
&configuration&
&include resource="org/springframework/boot/logging/logback/base.xml" /&
&logger name="org.springframework.web" level="INFO"/&
&/configuration&
在这个文件定义了一个 捕获 org.springframework.web 的日志,日志级别是 INFO,上面引用的base.xml 文件内容为:
&?xml version="1.0" encoding="UTF-8"?&
Base logback configuration provided for compatibility with Spring Boot 1.1
&included&
&includeresource="org/springframework/boot/logging/logback/defaults.xml" /&
&propertyname="LOG_FILE"value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}/}spring.log}"/&
&includeresource="org/springframework/boot/logging/logback/console-appender.xml" /&
&includeresource="org/springframework/boot/logging/logback/file-appender.xml" /&
&rootlevel="INFO"&
&appender-refref="CONSOLE" /&
&appender-refref="FILE" /&
&/included&
这个base.xml是Spring Boot的日志系统预先定义了一些系统变量:
PID,当前进程ID{LOG_FILE},Spring Boot配置文件(application.properties|.yml)中logging.file的值,${LOG_PATH}, Spring Boot配置文件中logging.path的值
同时默认情况下包含另个appender——一个是控制台,一个是文件,分别定义在console-appender.xml和file-appender.xml中。同时对于应用的日志级别也可以通过application.properties进行定义:
* 如果在 logback.xml 和 application.properties 中定义了相同的配置(如都配置了 org.springframework.web)但是输出级别不同,则实际上 application.properties 的优先级高于 logback.xml *
多环境日志输出
根据不同环境(prod:生产环境,test:测试环境,dev:开发环境)来定义不同的日志输出,在 logback-spring.xml 中使用 springProfile 节点来定义,方法如下:
【注意文件名称不是logback.xml,想使用spring扩展profile支持,要以logback-spring.xml命名】
&?xml version="1.0" encoding="UTF-8"?&
&configuration&
&include resource="org/springframework/boot/logging/logback/base.xml" /&
&logger name="org.springframework.web" level="INFO"/&
&logger name="org.springboot.sample" level="TRACE" /&
&!-- 测试环境+开发环境. 多个使用逗号隔开. --&
&springProfile name="test,dev"&
&logger name="org.springframework.web" level="INFO"/&
&logger name="org.springboot.sample" level="INFO" /&
&logger name="com.kfit" level="info" /&
&/springProfile&
&!-- 生产环境. --&
&springProfile name="prod"&
&logger name="org.springframework.web" level="ERROR"/&
&logger name="org.springboot.sample" level="ERROR" /&
&logger name="com.kfit" level="ERROR" /&
&/springProfile&
&/configuration&
可以启动服务的时候指定 profile (如不指定使用默认),如指定prod 的方式为:
java -jar xxx.jar --spring.profiles.active=prod
在Spring Boot 中记录日志只需两步:
1、在 src/main/resources 下面创建logback.xml 文件,并按上面讲述的进行配置。 或者使用最简单的方法在 application 配置文件中配置。
2、在Java代码中创建实例,并在需要输出日志的地方使用。
private Logger logger = LoggerFactory.getLogger(this.getClass());
publicvoidlogTest() {
logger.debug("日志输出测试 Debug");
logger.trace("日志输出测试 Trace");
("日志输出测试 Info");
【Spring Boot 系列博客】
更多查看博客:
浏览 21331
论坛回复 /
(0 / 12115)
单位无聊的时候,就会看看博主的东西,从中学习了很多,随着见识增长,也越来越困惑。学的越多,不会的越多,很正常的一个阶段....
spring boot 咋没有实现 log4j2 的 springProfile 原理差不多,可以自行实现。
博主的spring boot资源已经被我榨干了~从中能有收获即可。
浏览: 1215180 次
itlang01 写道场景2的代码加入事务的话就获取不到qid ...
场景2的代码加入事务的话就获取不到qid了,一般需要加入事务, ...
itlang01 写道这个视频页显示404,好像是被设置私密了 ...
这个视频页显示404,好像是被设置私密了
cw 写道有机会深入学习一下这个可以有!
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'&&原java logback日志输出到多个文件配置学习教程这个简单的示例是我最近解决一个疑惑的思想,就是把不同级别的日志输出到不同的文件中,或者说把不同用途的日志输出到不同的文件中。之前我在问答中提问如何监控quartz任务的状态和运行情况,有人提醒我加日志,我就尝试着专门为quartz添加了一个输出日志,基本能够解决我的问题,而且还能够过滤掉很多我不关注的日志信息。示例中只是logback的一丁点功能,logback异常强大,后面继续学习。例子很简单,没啥看的,主要是logback日志框架比较强大,大家可以多学习下,例子中我将logback内部的加载信息也打印出来了,大家也可以看看
public class TestLogback {
private Logger log = LoggerFactory.getLogger(TestLogback.class);
private Logger monitorLog = LoggerFactory.getLogger(&monitorLog&);
public void TestDebug(){
log.debug(&this is debug level log&+new Date());
public void TestInfo(){
(&this is Info level log&+new Date());
public static void main( String[] args ){
LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
StatusPrinter.print(lc);
new TestLogback().TestInfo();
new TestLogback().TestDebug();
&?xml version=&1.0& encoding=&UTF-8& ?&
&configuration&
&contextName&myAppName&/contextName&&!-- 区分不同应用程序的记录,默认为default --&
&appender name=&file& class=&ch.qos.logback.core.rolling.RollingFileAppender&&
&file&E:\\debug.log&/file&
&rollingPolicy class=&ch.qos.logback.core.rolling.TimeBasedRollingPolicy&&
&fileNamePattern&logs/xxx.%d{yyyy-MM-dd}.log.zip&/fileNamePattern&
&/rollingPolicy&
&encoder class=&ch.qos.logback.classic.encoder.PatternLayoutEncoder&&
&pattern&%-20(%d{HH:mm:ss.SSS} [%thread]) %-5level %logger{80} - %msg%n&/pattern&
&/encoder&
&/appender&
&appender name=&event& class=&ch.qos.logback.core.rolling.RollingFileAppender&&
&file&E:\\info.log&/file&
&rollingPolicy class=&ch.qos.logback.core.rolling.TimeBasedRollingPolicy&&
&fileNamePattern&E:\\event.%d{yyyy-MM-dd}.log&/fileNamePattern&
&maxHistory&30&/maxHistory&
&/rollingPolicy&
&encoder class=&ch.qos.logback.classic.encoder.PatternLayoutEncoder&&
&pattern&%msg%n&/pattern&
&/encoder&
&/appender&
&logger name=&monitorLog& level=&INFO& additivity=&false&&
&appender-ref ref=&event& /&
&root level=&DEBUG&&
&appender-ref ref=&file& /&
&/configuration&
效果如下:由编辑于 10:16:47猜你喜欢3个牛币请下载代码后再发表评论//lockbackDemo/lockbackDemo/.classpath/lockbackDemo/.project/lockbackDemo/.settings/lockbackDemo/.settings/org.eclipse.jdt.core.prefs/lockbackDemo/.settings/org.maven.ide.eclipse.prefs/lockbackDemo/pom.xml/lockbackDemo/src/lockbackDemo/src/main/lockbackDemo/src/main/java/lockbackDemo/src/main/java/com/lockbackDemo/src/main/java/com/zq/lockbackDemo/src/main/java/com/zq/logback/lockbackDemo/src/main/java/com/zq/logback/lockbackDemo/lockbackDemo/src/main/java/logback.xml/lockbackDemo/src/test/lockbackDemo/src/test/java/lockbackDemo/src/test/java/com/lockbackDemo/src/test/java/com/zq/lockbackDemo/src/test/java/com/zq/logback/lockbackDemo/src/test/java/com/zq/logback/lockbackDemo/lockbackDemo/target/lockbackDemo/target/classes/lockbackDemo/target/classes/com/lockbackDemo/target/classes/com/zq/lockbackDemo/target/classes/com/zq/logback/lockbackDemo/target/classes/com/zq/logback/lockbackDemo/lockbackDemo/target/classes/com/zq/logback/lockbackDemo/TestLogback.class/lockbackDemo/target/classes/logback.xml精精精精原精精原原原原精精原精相关分享原原原精精最近下载暂无贡献等级暂无贡献等级&LV1暂无贡献等级暂无贡献等级暂无贡献等级暂无贡献等级最近浏览&LV3暂无贡献等级暂无贡献等级暂无贡献等级暂无贡献等级暂无贡献等级扫描二维码关注最代码为好友"/>扫描二维码关注最代码为好友}

我要回帖

更多关于 logback 日志打印两遍 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信