log4j 配置详解_指定log4j2配置文件位置

log4j 配置详解_指定log4j2配置文件位置先来个配置文件—-log4j.rootLogger=debug,stdout,logfilelog4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.Target=System.errlog4j.appender.stdout.layout=org.apache.log4j.SimpleLayoutlog4j.appender.logfile=org.apache.log4j.FileAppender

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

先来个配置文件—-

log4j.rootLogger=debug,stdout,logfile
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.err
log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout
log4j.appender.logfile=org.apache.log4j.FileAppender
log4j.appender.logfile.File=d:/msb.log
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d{ 
   yyyy-MM-dd   HH:mm:ss} %l %F %p %m%n

日志内容之外的要求—-
1,log4j的配置文件格式为 .properties,必须命名为
log4j.properties不然会读取配置文件失败;

2,标准格式时键值对来保存配置内容—-key=value;

3,习惯将log4j.properties文件放在根目录下,因为默认情况下, 查找 日志配置文件是在CLASSPATH中查找名为log4j.properties的文件。

日志内容要求——
log4j.rootLogger—–>表示日志记录的级别以及记录方式

log4j.rootLogger=debug,stdout,logfile—–>日志记录级别为debug,输出方式为两种stdout,logfile(两种方式需要自己指定;)

日志记录级别—-的优先级

  1. fatal:出现非常严重的错误事件,这些事件可能导致程序异常终止

  2. error:虽有错误,但允许应用程序继续运行

  3. warn:运行环境潜藏着危害

  4. info:报告信息

  5. debug:细粒度的信息事件,对应于程序的调试;

每种级别包含他之上的级别;
即输出级别error包含fatal, debug包含上述所有级别

log4j.appender.stdout =——-表示输出方式

log4j.appender.stdout=org.apache.log4j.ConsoleAppender ——->在控制台输出
log4j.appender.stdout.Target=System.err—->>>表示输出信息为系统error
log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout—–>>表示输出格式为简单的格式

同理可以理解—-
log4j.appender.logfile=org.apache.log4j.FileAppender—->>输出位置在日志文件中
log4j.appender.logfile.File=d:/msb.log —–>>指定日志文件位置
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout—->>>输出格式—–指定格式
log4j.appender.logfile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %l %F %p %m%n —–>>>定义指定的格式

log4j.properties语法:

##Define the root logger with appender X
log4j.rootLogger = DEBUG, X
##Set the appender named X to be a File appender
log4j.appender.X=org.apache.log4j.FileAppender
##Define the layout for X appender
log4j.appender.X.layout=org.apache.log4j.PatternLayout
log4j.appender.X.layout.conversionPattern=%m%n

log4j.appender.X.中只要保证X一致即可,并非一定要使用 stdout和logfile 不过见名知意是最好的;

不过日常使用中一般不自己写而是直接到官网找到相关配置文件复制粘贴,然后改改就可以自己用了;
将log4j.properties配置文件的输出记录到控制台。

log4j.rootLogger=debug,stdout,logfile
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.err
log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout

将log4j.properties配置文件的输出记录到日志文件。

log4j.rootLogger=debug,logfile
log4j.appender.logfile=org.apache.log4j.FileAppender
log4j.appender.logfile.File=d:/msb.log
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d{yyyy-MM-dd   HH:mm:ss} %l %F %p %m%n

也可以同时记录,不过一般是按需所求,用户不需要看到某些错误信息,只给用户该看的就可以了;

再接触到xml之后,也可以用xml取完成配置文件—–

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration debug="true" xmlns:log4j="http://jakarta.apache.org/log4j/">
  <appender name="console" class="org.apache.log4j.ConsoleAppender">
      <layout class="org.apache.log4j.PatternLayout">
    <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n" />
      </layout>
  </appender>
  <root>
    <level value="DEBUG" />
    <appender-ref ref="console" />
  </root>
</log4j:configuration>
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration debug="true" xmlns:log4j="http://jakarta.apache.org/log4j/">
 
  <appender name="file" class="org.apache.log4j.RollingFileAppender">
     <param name="append" value="false" />
     <param name="maxFileSize" value="10KB" />
     <param name="maxBackupIndex" value="5" />
     <!-- For Tomcat -->
     <param name="file" value="${catalina.home}/logs/my.log" />
     <layout class="org.apache.log4j.PatternLayout">
    <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n" />
     </layout>
  </appender>
 
  <root>
    <level value="ERROR" />
    <appender-ref ref="file" />
  </root>
 
</log4j:configuration>

最后整合一个标准的

# Root logger option
log4j.rootLogger=INFO, file, stdout
 
# Direct log messages to a log file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=C:\\my.log
log4j.appender.file.MaxFileSize=10MB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
 
# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration debug="true" xmlns:log4j="http://jakarta.apache.org/log4j/">
 
  <appender name="console" class="org.apache.log4j.ConsoleAppender">
      <layout class="org.apache.log4j.PatternLayout">
    <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n" />
      </layout>
  </appender>
 
  <appender name="file" class="org.apache.log4j.RollingFileAppender">
      <param name="append" value="false" />
      <param name="maxFileSize" value="10MB" />
      <param name="maxBackupIndex" value="10" />
      <param name="file" value="${catalina.home}/logs/my.log" />
      <layout class="org.apache.log4j.PatternLayout">
    <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n" />
      </layout>
  </appender>
 
  <root>
    <level value="DEBUG" />
    <appender-ref ref="console" />
    <appender-ref ref="file" />
  </root>
 
</log4j:configuration>

日志记录的方式——

package com.gavin;
import org.apache.log4j.Logger;
import java.io.IOException;
public class Test01 { 
   
    public static void main(String[] args) throws IOException { 
   
        //Logger logger = Logger.getLogger("com.gavin.Test01");//类的全路径名
        Logger logger = Logger.getLogger(Test01.class);
    
       logger.fatal("fatal");
        logger.error("error");
        logger.warn("warn");
        logger.info("info");
        //logger.debug("debug");
        try { 
   
            int result = 1 / 0;
        } catch (Exception e) { 
   
            logger.error("程序运算错误", e);
        }
    }
}

注—–以上内容仅供学习参考使用;

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/187647.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • JSONObject 对象转化为Map「建议收藏」

    JSONObject 对象转化为Map「建议收藏」阿里的JSONObject对象转化为Map对象//json对象转为mappublicMap<String,Object>JsonToMap(JSONObjectjson){System.out.println(“********************转Map对象******************”+json);Map<String,Object>data=newHashMap<>();

    2022年8月23日
    14
  • CAS 认证原理[通俗易懂]

    CAS 认证原理[通俗易懂]一CAS原理简介CAS官方网站上的介绍图:主要原理:用户第一次访问一个CAS服务的客户web应用时(访问URL:http://192.168.7.90:8081/web1),部署在客户web应用的casAuthenticationFilter,会截获此请求,生成s…

    2022年6月24日
    68
  • android 联系人中,在超大字体下,加入至联系人界面(ConfirmAddDetailActivity)上有字体显示不全的问题…

    android 联系人中,在超大字体下,加入至联系人界面(ConfirmAddDetailActivity)上有字体显示不全的问题…

    2022年3月3日
    68
  • java如何实现换行_网页换行代码

    java如何实现换行_网页换行代码在taxtarea中输入的文本。如果含有回车或空格。在界面上显示的时候则不哪么正常。回车消失了,空格变短了。如何解决这个问题呢。有2种方法。1.使用标签w3c对pre元素是这样定义的:pre元素可定义预格式化的文本。被包围在pre元素中的文本通常会保留空格和换行符。而文本也会呈现为等宽字体。更详细的内容请参考http://www.w3school.com.cn/tags/tag_pre.a…

    2025年6月8日
    2
  • 安装pyodbc_编程python是什么

    安装pyodbc_编程python是什么1、连接数据库pipinstallpyodbc成功后就可以用了首先要importpyodbc1)直接连接数据库和创建一个游标(cursor)cnxn=pyodbc.connect(‘DRIVER={SQLServer};SERVER=localhost;DATABASE=testdb;UID=me;PWD=pass’)cursor=cnxn.cursor()2)使用DSN连接。通常DSN连接并不需要密码,还是需要提供一个PSW的关键字。cnxn=pyodb

    2022年4月19日
    61
  • MATLABfill函数_matlab中C的模块名称是什么

    MATLABfill函数_matlab中C的模块名称是什么matlab移植C/C++代码时,发现不管是opencv还是IPP库都没有填充联通区域函数imfill(),于是只能自己动手了。先展示一下imfill()函数的功能,如下图:上图中,左图是一个二值图像,白色是手臂边缘像素值为1,黑色区域像素值为0,现在想将手臂填充1,用imfill()函数可以实现该功能,但C/C++代码需要自己实现。C/C++代码:boolimFill(Ipp8u*img,intwidth,intheight){ vector<int>q; int

    2025年11月4日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号