Java 使用logback共享包登录不同的文件

Java 使用logback共享包登录不同的文件,java,logback,Java,Logback,我有一个批处理应用程序,它根据传递的参数执行两种不同的逻辑。我的应用程序使用Spring,我想在每个“不同进程”中登录不同的日志文件。 由于这些类位于不同的包中,我在logback.xml文件中配置了记录器以使用自己的appender <?xml version="1.0" encoding="UTF-8"?> <configuration> <!-- Referencia: http://logback.qos.ch/manual/configurat

我有一个批处理应用程序,它根据传递的参数执行两种不同的逻辑。我的应用程序使用Spring,我想在每个“不同进程”中登录不同的日志文件。 由于这些类位于不同的包中,我在logback.xml文件中配置了记录器以使用自己的appender

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

   <!-- Referencia: http://logback.qos.ch/manual/configuration.html -->

   <!-- Propiedades de configuracion -->
   <property resource="batch.properties" />

   <!-- Appenders: http://logback.qos.ch/manual/appenders.html -->

 <!-- pattern: %date [%thread] %-5level %logger - [%file:%line] - %message%n -->

<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
  <encoder>
    <pattern>%date [%thread] %-5level %logger - %message%n</pattern>
  </encoder>
  </appender>

  <appender name="appender1" class="ch.qos.logback.core.rolling.RollingFileAppender">
   <File>${log.dir}/batch-${HOSTNAME}.log</File>

<encoder>
  <pattern>%date [%thread] %-5level %logger - %message%n</pattern>
</encoder>

<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
  <minIndex>1</minIndex>
  <maxIndex>10</maxIndex>
  <FileNamePattern>${log.dir}/batch-${HOSTNAME}.log.%i</FileNamePattern>
</rollingPolicy>

<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
  <MaxFileSize>10MB</MaxFileSize>
</triggeringPolicy>
 </appender>

<appender name="appender2" class="ch.qos.logback.core.rolling.RollingFileAppender">
  <File>${log.dir}/batch-${HOSTNAME}.log</File>

 <encoder>
   <pattern>%date [%thread] %-5level %logger - %message%n</pattern>
 </encoder>

 <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
  <minIndex>1</minIndex>
  <maxIndex>10</maxIndex>
  <FileNamePattern>${log.dir}/batch-${HOSTNAME}.log.%i</FileNamePattern>
</rollingPolicy>

<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
  <MaxFileSize>10MB</MaxFileSize>
</triggeringPolicy>
</appender>

<!-- Levels  -->
 <logger name="my.process1" level="INFO">
    <appender-ref ref="appender1">/
 </logger>
 <logger name="my.process2" level="INFO">
<appender-ref ref="appender2">/
  </logger>
  <logger name="org.apache" level="INFO"/>
  <logger name="org.springframework" level="WARN" />
   <logger name="com.ibm" level="INFO"/>

 <!-- Root -->
 <root level="INFO">
    <appender-ref ref="console"/>
 </root>

%日期[%thread]-5级别%logger-%message%n
${log.dir}/batch-${HOSTNAME}.log
%日期[%thread]-5级别%logger-%message%n
1.
10
${log.dir}/batch-${HOSTNAME}.log。%i
10MB
${log.dir}/batch-${HOSTNAME}.log
%日期[%thread]-5级别%logger-%message%n
1.
10
${log.dir}/batch-${HOSTNAME}.log。%i
10MB
/
/

但我也想记录Spring信息,但“仅”记录在它正在执行的进程的文件中。我应该如何配置它

谢谢


编辑:发布了我的实际logback.xml。我知道,通过这种配置,spring不会登录任何文件,但我不知道如何将其配置为只登录一个文件。

您可以改进并给出一个更具体的示例吗?您最好的选择可能是在spring日志中使用一个。我还不确定MDC作为决定因素是否有效,这取决于应用程序的工作方式。