Le projet springboot intègre log4j2 dans un package jar, importe le fichier log4j2 externe et le journal en cours d'exécution ne peut pas être imprimé

Le projet springboot intègre log4j2 dans un package jar, importe le fichier log4j2 externe et le journal en cours d'exécution ne peut pas être imprimé

Description du problème

Comme il existe déjà des fichiers log4j2 dans le projet, ils sont également inclus dans le fichier jar typé. Le fichier log4j2 externe est introduit dans application.yml. Lorsque le projet démarre, le journal peut être imprimé, mais lorsque le fichier journal atteint la valeur spécifiée ou la date Après le rollback, le projet ne se connectera pas

Analyse des causes

log4j2 est un plug-in de programmation. Lorsque le package log4j2 est compilé ou que le package contenant le plug-in log4j2 est compilé, les informations du plug-in à charger seront placées dans META-INF/org/apache/logging/log4j /core/config/plugins/ Log4j2Plugins.dat (y compris le plug-in natif officiel logj42), puis au démarrage du projet, log4j2 analysera le fichier d'informations du plug-in dans le répertoire META-INF de chaque package jar, et puis chargez le plug-in. Mais lorsque le projet est empaqueté dans un package jar, s'il existe un fichier Log4j2Plugins.dat dans deux packages jar différents, il y aura un problème, l'un des fichiers sera écrasé par l'autre, ce qui entraînera un fichier lorsque le projet démarre Le plugin ne peut pas être chargé normalement, ce qui entraîne une erreur.

problème résolu

Supprimez le fichier log4j2 dans le projet pour vous assurer qu'il n'y a pas de fichier log4j2 dans le jar

Joindre la configuration de log4j2

<?xml version="1.0" encoding="UTF-8"?>

<Configuration status="warn" name="MyApp" monitorInterval="60">
  <properties>
        <property name="LOG_HOME">/var/log/koal</property>
		<property name="LOG_FILE">ipsec-rms</property>
        <property name="FILE_NAME">ipsec-rms</property>
    </properties>
  <Appenders>
    <!--Console:日志输出到控制台标准输出 -->
    <Console name="Console" target="SYSTEM_OUT">
      <PatternLayout charset="UTF-8" pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
    </Console>
    <RollingFile name="RollingFile" fileName="${LOG_HOME}/${FILE_NAME}.log" filePattern="${LOG_HOME}/${LOG_FILE}/$${date:yyyy-MM}/${FILE_NAME}-%d{yyyy-MM-dd}-%i.log">
	   <!--
	   onMatch="ACCEPT" 表示匹配该级别及以上
	   onMismatch="DENY" 表示不匹配该级别以下的
	   -->
      <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
	  <!--
	  格式化输出:
	  %d 	输出时间
	  %L	输出行号
	  %m或%msg或%message  输出日志信息
	  %t或%tn或%thread或%threadName	 输出线程id
	  %-5level  输出日志级别,-5表示左对齐并且固定输出5个字符,如果不足在右边补0
	  -->
      <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level [%L] - %msg%n" />
      <Policies>
	     <!--
		 TimeBasedTriggeringPolicy基于时间的触发策略:
		 该策略主要是完成周期性的log文件封存工作。有两个参数:interval,integer型,指定两次封存动作之间的时间间隔。这个配置需要和filePattern结合使用,filePattern日期格式精确到哪一位,interval也精确到哪一个单位。
		 注意filePattern中配置的文件重命名规则是%d{
    
    yyyy-MM-ddHH-mm-ss}-%i,最小的时间粒度是ss,即秒钟。TimeBasedTriggeringPolicy默认的size是1,结合起来就是每1秒钟生成一个新文件。如果改成%d{
    
    yyyy-MM-dd HH},最小粒度为小时,则每一个小时生成一个文件-->
        <TimeBasedTriggeringPolicy/>
        <SizeBasedTriggeringPolicy size="20MB"/>
      </Policies>
      <!-- 最多同一文件夹下5个文件开始覆盖-->
	  <DefaultRolloverStrategy max="5">
	       <!-- 
		   Delete 删除策略
		   maxDepth要访问的目录的最大级别数。值为0表示仅访问起始文件,除非安全管理器拒绝。Integer.MAX_VALUE的值指示应访问所有级别。
		   默认值为1,表示仅指定基本路径中的文件。-->
		 <Delete basePath="${LOG_HOME}/${LOG_FILE}/$${date:yyyy-MM}/" maxDepth="2">
			<IfFileName glob="*.log" />
			<!--!Note: 这里的age必须和filePattern协调, 后者是精确到HH, 这里就要写成xH, xd就不起作用
			另外, 数字最好>2, 否则可能造成删除的时候, 最近的文件还处于被占用状态,导致删除不成功!-->
			<!--30天-->
			<IfLastModified age="30d" />
		 </Delete>
      </DefaultRolloverStrategy>
    </RollingFile>
    <Syslog name="SYSLOG" host="127.0.0.1" port="514" protocol="UDP"/>
  </Appenders>
  <Loggers>
    <Root level="info">
      <AppenderRef ref="RollingFile"/>
      <AppenderRef ref="SYSLOG"/>
    </Root>
  </Loggers>
</Configuration>





Je suppose que tu aimes

Origine blog.csdn.net/sunrj_niu/article/details/128033321
conseillé
Classement