java启动jar包将日志打印到文本的简单操作

 更新时间:2020年08月18日 10:39:38   作者:Wales_  
这篇文章主要介绍了java启动jar包将日志打印到文本的简单操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

启动命令:

java -jar weichi-1.0.0.jar

将命令打印到1.log上

java -jar weichi-1.0.0.jar > 1.log

补充知识:Java中日志的使用(包含指定日志信息输出到指定地方)

一、前言

对于我们开发者而言,日志存在的意义十分重大;本文主要是自己整理了关于日志的一些知识点,希望能帮助到需要的人,也希望各位能指出我的错误。

二、日志的作用

① 记录运行信息,方便调试

② 记录错误信息,方便排查错误

③ 存储运行记录,方便后期的数据分析

三、日志的主要知识点:三大组件

1.Loggers 组件

1.1作用:

设置日志级别,决定什么日志信息应该被输出、什么日志信息应该被忽略。

1.2.分类:

DEBUG < INFO< WARN < ERROR < FATAL

一般情况下,子类中的级别设置会覆盖根root中的logger,且一般子类默认的级别为INFO,所以个人觉得根root中设置拦截级别似乎没什么作用。

1.3.例子:

配置根Logger

log4j.rootLogger= [ level ] , appenderName1, appenderName2

注意:根logger 具有继承性,他下属的appednerName均继承自他,比如继承了日志拦截级别等,当然,下属也可覆盖掉来着父类的日志拦截级别(Threshold)。如果不想继承,那么设置如下:log4j.additivity.org.apache=false

2.Appenders 组件

2.1.作用:

设置日志输出的位置以及其他相关的信息

2.2.语法:

(appenderName 为日志名,需要在rootlogger中声明或者使用自定义声明,自定义声明具体看指定日志信息输出到指定地方那部分;className输出的类,具体看下面;potion1=value1是其他相关的配置,比如配置输出位置,输出的级别的信息)

log4j.appender.appenderName = className 
log4j.appender.appenderName.Option1 = value1 
… 
log4j.appender.appenderName.OptionN = valueN

2.3.className 的相关类

org.apache.log4j.ConsoleAppender(控制台)

org.apache.log4j.FileAppender(文件)

org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)

org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)

org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)

2.4.例子

3.Layout组件

3.1作用:

决定了输出日志的格式

3.2.类型

. org.apache.log4 j.HTMLLayout(以HTML表格形式布局);

. org.apache.log4 j.PatternLayout(可以灵活地指定布局模式);

. org.apache.log4 j.SimpleLayout(包含日志信息的级别和信息字符串);

. org.apache.log4 j.TTCCLayout(包含日志产生的时间、线程和类别等信息);

3.3.输出格式的定义ConversionPattern

符号 描述

%r 自程序开始后消耗的毫秒数

%t 表示日志记录请求生成的线程

%p 表示日专语句的优先级

%r 与日志请求相关的类别名称

%c 日志信息所在的类名

%m%n 表示日志信息的内容

3.4.例子

log4j.appender.file.layout=org.apache.log4j.PatternLayout

log4j.appender.file.layout.ConversionPattern=[VAMS][%d] %p | %m | [%t] %C.%M(%L)%n

三、总结例子(包含指定日志信息输出到指定地方)

1.配置文件

配置文件默认存放在src目录下,名字为log4j.properties

log4j.rootLogger=DEBUG,MINA,file,logFile //注意包含了很多
## mina 设置日志发送到控制台
log4j.appender.MINA=org.apache.log4j.ConsoleAppender 
log4j.appender.MINA.layout=org.apache.log4j.PatternLayout 
log4j.appender.MINA.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss,SSS} %-5p %c{1} %x - %m%n
## File 设置日志输出到指定大小的文件 
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.Threshold=DEBUG   //不继承父类的
log4j.appender.file.File=./log/mina.log  //路径
log4j.appender.file.MaxFileSize=5120KB  //大小
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=[VAMS][%d] %p | %m | [%t] %C.%M(%L)%n
## logFile 设置日志输出到指定路劲
log4j.appender.logFile=org.apache.log4j.FileAppender 
log4j.appender.logFile.Threshold=DEBUG 
log4j.appender.logFile.ImmediateFlush=true (表示所有消息都会被立即输出)
log4j.appender.logFile.Append=true  (rue表示消息增加到指定文件中,默认就是true)
log4j.appender.logFile.File=./log/log.log4j 
log4j.appender.logFile.layout=org.apache.log4j.PatternLayout 
log4j.appender.logFile.layout.ConversionPattern=[%-5p] %d(%r) --> [%t] %l: %m %x %n

2.简单调用

public class TestLog4j {
  public static void main(String[] args) {
 PropertyConfigurator.configure( " D:/Code/conf/log4j.properties " ); //读取配置文件路径
  Logger logger = Logger.getLogger(TestLog4j. class );  //加载本类
  logger.debug( " debug " );     //设置此处debug级别输出的内容
  logger.error( " error " );     //设置此处error级别输出的内容
}
}

★★3.将关于特定类的日志输出到特定的日志文件中

需求:我们想将类 A 中的日志输出,输出到一个单独的特定文件中

配置:

log4j.logger.signature=debug,signature     //自定义输出
log4j.additivity.signature= false      //不继承父类
log4j.appender.signature = org.apache.log4j.FileAppender //输出到指定地方
log4j.appender.signature.Append=true     //输出不覆盖
log4j.appender.signature.File=./log/signature.log   //输出到指定地址
log4j.appender.signature.layout=org.apache.log4j.PatternLayout
log4j.appender.signature.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n

使用

public void test1(){
 Logger logger = Logger.getLogger("signature");
 logger.info("testinfo");
 }

重点: 发挥主要作用的是 log4.additivity。 用于决定子logger是否继承父logger的appender。如果设置为false,那么子logger的输出只会输出到自己指定的文件/控制台下。而不会输出到父logger指定的文件/控制台下。

以上这篇java启动jar包将日志打印到文本的简单操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • java 动态生成bean的案例

    java 动态生成bean的案例

    这篇文章主要介绍了java 动态生成bean的案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • java8快速实现List转map 、分组、过滤等操作

    java8快速实现List转map 、分组、过滤等操作

    这篇文章主要介绍了java8快速实现List转map 、分组、过滤等操作,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • 基于SpringBoot实现发送带附件的邮件

    基于SpringBoot实现发送带附件的邮件

    这篇文章主要介绍了基于SpringBoot实现发送带附件的邮件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • MyBatis几种不同类型传参的方式总结

    MyBatis几种不同类型传参的方式总结

    这篇文章主要介绍了MyBatis几种不同类型传参的方式总结,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • SpringBoot接口如何对参数进行校验

    SpringBoot接口如何对参数进行校验

    这篇文章主要介绍了SpringBoot接口如何对参数进行校验,在以SpringBoot开发Restful接口时, 对于接口的查询参数后台也是要进行校验的,同时还需要给出校验的返回信息放到上文我们统一封装的结构中
    2022-07-07
  • Java适配器模式的实现及应用场景

    Java适配器模式的实现及应用场景

    适配器模式是Java中一种常用的设计模式,它通过将一个类的接口转换成客户端所期望的另一种接口来实现不同接口之间的兼容性。适配器模式主要应用于系统的接口不兼容、需要扩展接口功能以及需要适应不同环境的场景
    2023-04-04
  • Java基础之容器LinkedList

    Java基础之容器LinkedList

    这篇文章主要介绍了Java基础之容器LinkedList,文中有非常详细的代码示例,对正在学习java基础的小伙伴们有非常好的帮助,需要的朋友可以参考下
    2021-04-04
  • IDEA标签tabs多行显示的设置

    IDEA标签tabs多行显示的设置

    这篇文章主要介绍了IDEA标签tabs多行显示的设置方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • JAVA新手小白学正则表达式、包装类、自动装箱/自动拆箱以及BigDecimal

    JAVA新手小白学正则表达式、包装类、自动装箱/自动拆箱以及BigDecimal

    这篇文章主要给大家介绍了关于JAVA新手小白学正则表达式、包装类、自动装箱/自动拆箱以及BigDecimal的相关资料,文中通过实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2022-03-03
  • spring动态注册bean AOP失效原理解析

    spring动态注册bean AOP失效原理解析

    这篇文章主要为大家介绍了spring动态注册bean使AOP失效原理解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07

最新评论