3.3java中的日志

    技术2023-10-19  78

    java内置日志(JDK Logging)

    java中内置了日志包(java.util.logging),例:

    // logging import java.util.logging.Level; import java.util.logging.Logger; public class Hello { public static void main(String[] args) { Logger logger = Logger.getGlobal(); logger.info("start process..."); logger.warning("memory is running out..."); logger.fine("ignored."); logger.severe("process will be terminated..."); } } Mar 02, 2019 6:32:13 PM Hello main INFO: start process... Mar 02, 2019 6:32:13 PM Hello main WARNING: memory is running out... Mar 02, 2019 6:32:13 PM Hello main SEVERE: process will be terminated...

    日志自动输出了日期时间,以及错误等级,错误信息等。 上边说日志输出分级,共有七级:

    SEVERE

    WARNING

    INFO

    CONFIG

    FINE

    FINER

    FINEST 默认是INFO级别,INFO以下的级别不打印,更改默认配置需要在JVM启动时传递参数

    -Djava.util.logging.config.file=<config-file-name>

    第三方日志(Commons Logging)

    在使用第三方日志之前,要先将包导入到项目中 下载第三方日志 下载解压找到commons-logging-1.2.jar,并将其放在该类同目录下。 步骤:

    通过LogFactory获取Log类的实例使用Log实例的方法打日志 Demo: import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; public class Main { public static void main(String[] args) { Log log = LogFactory.getLog(Main.class); log.info("start..."); log.warn("end."); } }

    日志级别:

    FATALERRORWARNINGINFODEBUGTRACE

    Log4j

    下载jar包 Commons Logging可以用来做日志接口,而真正的日志实现可以用Log4j Log4j在输出一条日志时,可以自动通过不同的Appender将一条日志输出到不同的目的地:

    console:输出到屏幕;file:输出到文件;socket:通过网络输出到远程计算机;jdbc:输出到数据库

    使用Log4j:

    在使用Log4j时,我们只需要将配置文件放置在classpath下,以XML为例:

    <?xml version="1.0" encoding="UTF-8"?> <Configuration> <Properties> <!-- 定义日志格式 --> <Property name="log.pattern">%d{MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36}%n%msg%n%n</Property> <!-- 定义文件名变量 --> <Property name="file.err.filename">log/err.log</Property> <Property name="file.err.pattern">log/err.%i.log.gz</Property> </Properties> <!-- 定义Appender,即目的地 --> <Appenders> <!-- 定义输出到屏幕 --> <Console name="console" target="SYSTEM_OUT"> <!-- 日志格式引用上面定义的log.pattern --> <PatternLayout pattern="${log.pattern}" /> </Console> <!-- 定义输出到文件,文件名引用上面定义的file.err.filename --> <RollingFile name="err" bufferedIO="true" fileName="${file.err.filename}" filePattern="${file.err.pattern}"> <PatternLayout pattern="${log.pattern}" /> <Policies> <!-- 根据文件大小自动切割日志 --> <SizeBasedTriggeringPolicy size="1 MB" /> </Policies> <!-- 保留最近10--> <DefaultRolloverStrategy max="10" /> </RollingFile> </Appenders> <Loggers> <Root level="info"> <!-- 对info级别的日志,输出到console --> <AppenderRef ref="console" level="info" /> <!-- 对error级别的日志,输出到err,即上面定义的RollingFile --> <AppenderRef ref="err" level="error" /> </Root> </Loggers> </Configuration>

    使用SLF4J和Logback

    SLF4JLogback 同样下载jar包,然后配置,因为用的不多,所以不细说。

    Processed: 0.014, SQL: 9