logback

细说Java主流日志工具库

好久不见. 提交于 2020-03-05 22:03:53
目录 概述    java.util.logging (JUL)    Log4j    Logback    Log4j vs Logback    common-logging    slf4j    common-logging vs slf4j    总结 实施日志解决方案    引入jar包      slf4j直接绑定日志组件      slf4j兼容非slf4j日志组件      spring 集成 slf4j      common-logging绑定日志组件    配置      完整的logback.xml参考示例      完整的log4j.xml参考示例      logback配置参数说明    使用API      slf4j用法      common-logging用法 参考 概述 在项目开发中,为了跟踪代码的运行情况,常常要使用日志来记录信息。 在Java世界,有很多的日志工具库来实现日志功能,避免了我们重复造轮子。 我们先来逐一了解一下主流日志工具。 java.util.logging (JUL) JDK1.4开始,通过 java.util.logging 提供日志功能。 它能满足基本的日志需要,但是功能没有Log4j强大,而且使用范围也没有Log4j广泛。 Log4j Log4j是apache的一个开源项目,创始人Ceki Gulcu。

一秒完成springboot与logback配置

一曲冷凌霜 提交于 2020-03-05 13:25:50
1. 一秒配置与效果 1.1 一秒配置 ​ spring boot中无须添加任何依赖,直接在resources文件夹下面新建logback.xml文件,将以下代码复制过去,配置完成,可以使用了。 <?xml version="1.0" encoding="UTF-8"?> <configuration> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <!-- encoder 默认配置为PatternLayoutEncoder --> <encoder> <pattern>%d [%thread] %msg%n</pattern> </encoder> </appender> <appender name="info_log" class="ch.qos.logback.core.rolling.RollingFileAppender"> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <!-- rollover daily --> <FileNamePattern>log/info-%d{yyyy-MM-dd}.%i.log</FileNamePattern> <!--

春眠不觉晓,RCE知多少?

一个人想着一个人 提交于 2020-03-03 17:32:05
前言 读者受众:所有人 阅读要求:30mins 文章中2620还没写完,清水川崎大佬就爆2634了,据说他还藏了很多个0day RCE 简单案例分析RCE    通过Java执行系统命令,与cmd中或者终端上一样执行shell命令,最典型的用法就是使用Runtime.getRuntime().exec(command)或者new ProcessBuilder(cmdArray).start()。 //漏洞源码 public String CommandExec ( HttpServletRequest request ) { String cmd = request . getParameter ( "cmd" ) . toString ( ) ; Runtime run = Runtime . getRuntime ( ) ; String lineStr = "" ; try { Process p = run . exec ( cmd ) ; BufferedInputStream in = new BufferedInputStream ( p . getInputStream ( ) ) ; BufferedReader inBr = new BufferedReader ( new InputStreamReader ( in ) ) ; String tmpStr ;

logback快速入门

二次信任 提交于 2020-03-03 02:15:10
一、slf4j The Simple Logging Facade for Java (SLF4J) serves as a simple facade or abstraction for various logging frameworks, such as java.util.logging, logback and log4j. SLF4J allows the end-user to plug in the desired logging framework at deployment time. 简单日志门面(SLF4J)为各种日志框架提供了一个简单的接口,使得用户能够在部署的时候配置其所希望的日志系统。 在实际的开发过程中,可能会使用各种不同的日志系统,每个日志系统的风格、样式和布局也不尽相同,在不同日志系统之间进行切换耗时耗力。使用slf4j无需考虑具体使用哪个日志系统,统一使用slf4j的API进行开发。当要在不同日志系统之间进行切换时,只需要选择对应的日志系统包即可,十分灵活方便(当然,日志系统本身的jar包和配置文件还是需要的)。还有一点好处是,slf4j能够支持多个参数,并且通过{}占位符进行替换,避免了各种各样的判断条件,从而提升了性能。 到官网下载最新版本的slf4j,解压缩。slf4j-api-version.jar是slf4j的核心jar包。除此之外

从Log4j迁移到LogBack的理由

荒凉一梦 提交于 2020-03-02 06:24:48
无论从设计上还是实现上,Logback相对log4j而言有了相对多的改进。不过尽管难以一一细数,这里还是列举部分理由为什么选择logback而不是log4j。牢记logback与log4j在概念上面是很相似的,它们都是有同一群开发者建立。所以如果你已经对log4j很熟悉,你也可以很快上手logback。如果你喜欢使用log4j,你也许会迷上使用logback。 更快的执行速度 基于我们先前在log4j上的工作,logback 重写了内部的实现,在某些特定的场景上面,甚至可以比之前的速度快上10倍。在保证logback的组件更加快速的同时,同时所需的内存更加少。 充分的测试 Logback 历经了几年,数不清小时数的测试。尽管log4j也是测试过的,但是Logback的测试更加充分,跟log4j不在同一个级别。我们认为,这正是人们选择Logback而不是log4j的最重要的原因。人们都希望即使在恶劣的条件下,你的日记框架依然稳定而可靠。 logback-classic 非常自然的实现了SLF4J logback-classic中的登陆类自然的实现了SLF4J。当你使用 logback-classic作为底层实现时,涉及到LF4J日记系统的问题你完全不需要考虑。更进一步来说,由于 logback-classic强烈建议使用SLF4J作为客户端日记系统实现

180623-SpringBoot之logback配置文件

别等时光非礼了梦想. 提交于 2020-03-02 05:23:22
SpringBoot配置logback 项目的日志配置属于比较常见的case了,之前接触和使用的都是Spring结合xml的方式,引入几个依赖,然后写个 logback.xml 配置文件即可,那么在SpringBoot中可以怎么做? <!-- more --> I. 配置说明 在resource目录下,新建一个日志文件: logback-spring.xml ,内容如下 <?xml version="1.0" encoding="UTF-8"?> <configuration> <!-- %m输出的信息,%p日志级别,%t线程名,%d日期,%c类的全名,%i索引【从数字0开始递增】,,, --> <!-- appender是configuration的子节点,是负责写日志的组件。 --> <!-- ConsoleAppender:把日志输出到控制台 --> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%d [%t] %-5level %logger{36}.%M\(%file:%line\) - %msg%n</pattern> <!-- 控制台也要使用UTF-8,不要使用GBK,否则会中文乱码 --> <charset>UTF-8</charset>

Logback 简明使用手册

北战南征 提交于 2020-03-02 04:54:04
主要内容 跑起来 配置项 工作原理 1. 统一日志输出 巴拉巴拉。。。 (为什么这么玩,有什么好处 google it) 说明: 本篇主要偏应用为主,介绍了如何使用logback, 以及相关的配置,对于这个东西的实现原理以及工作机制,没有涉入; 此外大部分内容来源于互联网,博客,这里只是给了一个梳理和小结,方便一键式接入 官方文档 http://logback.qos.ch/manual/index.html 2. 跑起来 基本配置 maven依赖: <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>${logback.version}</version> </dependency> 代码中使用方式 package com.mushroom.hui; public class LogTest { private static final org.slf4j.Logger logger = org.slf4j.LoggerFactory(LogTest.class); @Test public void logTest() { logger.info("hello wolrd! This is in method {}, print by {

logback--过滤器+补充

让人想犯罪 __ 提交于 2020-03-02 04:34:29
ok,这里先简单罗列下logback日志框架的好处,关于仔细的整理后面会专门写一篇博客的。 1,配置简单,易于上手 2,一个日志文件中只能某一个级别的日志 3,一个类中可以指定多个不同的日志,并且生成的每个日志文件中只包含其本身的内容 4,可以关闭或者打开某几个包的日志,并且可以设置不同的包使用不同的日志级别。 关于上面的第1点,第3点,第4点我前面博客里面都有整理到了。这里我们重点看下第2种情况: 日志级别及文件 考虑如下实际编码中经常遇见的场景: 日志记录采用分级记录,级别与日志文件名相对应,不同级别的日志信息记录到不同的日志文件中。例如:error级别记录到log_error_xxx.log或log_error.log(该文件为当前记录的日志文件),而log_error_xxx.log为归档日志, 日志文件按日期记录,同一天内,若日志文件大小等于或大于2M,则按0、1、2...顺序分别命名。例如log-level-2013-12-21.0.log。 OK,这里就要用到这篇博客讲的<filter>标签了。下面是具体代码和配置。 下面是一份配置文件: <?xml version="1.0" encoding="UTF-8"?> <!-- debug:打印logback内部日志信息,实时查看logback的运行状态,默认为false --> <!-- scan:配置文件如果发生改变

JOOQ with Logback

浪尽此生 提交于 2020-03-01 04:45:46
问题 I use springBoot with JOOQ and would like to log generated SQL's. I added slf4J to my maven dependency and log4j.xml like in JOOQ documenation (http://www.jooq.org/doc/latest/manual/sql-execution/logging/). But when jooq executes some queries, I can not see any log in my console. I also search for this issue in google, but I couldn't find anything. SpringBoot uses logBack, so I have logBack and slf4J in my path. Is it possible to use logBack for JOOQ ? I didnt any instruction on JOOQ Site

java日志组件(common-logging slf4j log4j logback)

不问归期 提交于 2020-02-29 09:54:56
一、日志接口(common-loggin&slf4j) ---------------------------------------- common-logging----------------------------------------- common-logging 是apache提供的一个通用的日志接口。用户可以自由选择第三方的日志组件作为具体实现,像log4j,或者jdk自带的logging, common-logging会通过 动态查找的机制 ,在程序运行时自动找出真正使用的日志库。当然,common-logging内部有一个Simple logger的简单实现,但是功能很弱。所以使用common-logging,通常都是配合着log4j来使用。使用它的好处就是,代码依赖是common-logging而非log4j, 避免了和具体的日志方案直接耦合,在有必要时,可以更改日志实现的第三方库,缺点由于其实通过 ClassLoader 动态加载,OSGI在不同组件中类加载器不同,common-logging就无法满足需求。 使用common-logging的常见代码: import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; public class A {