loackback根据不同的端口输出不同的日志文件
使用这种方式不好使,本人亲测
logback配置类
package com.innovation.ic.b1b.util;
import ch.qos.logback.core.Context;
import ch.qos.logback.core.spi.PropertyDefiner;
import ch.qos.logback.core.status.Status;
import org.springframework.stereotype.Component;
import org.yaml.snakeyaml.Yaml;
import java.util.Map;
@Component
public class LogbackConfigUtil implements PropertyDefiner {
private static final String LOGBACK_PORT_PARAMETER = "--server.port";
public static String logbackPort;
@Override
public String getPropertyValue() {
if (null == logbackPort){
Yaml yaml = new Yaml();
Map<String, Object> serverMap = yaml.load(LogbackConfigUtil.class.getResourceAsStream("/" + "bootstrap.yml"));
Map<String, Object> portMap = (Map<String, Object>) serverMap.get("server");
Integer port = (Integer) portMap.get("port");
return port.toString();
}else {
return logbackPort;
}
}
@Override
public void setContext(Context context) {
}
@Override
public Context getContext() {
return null;
}
@Override
public void addStatus(Status status) {
}
@Override
public void addInfo(String msg) {
}
@Override
public void addInfo(String msg, Throwable ex) {
}
@Override
public void addWarn(String msg) {
}
@Override
public void addWarn(String msg, Throwable ex) {
}
@Override
public void addError(String msg) {
}
@Override
public void addError(String msg, Throwable ex) {
}
public static void setLogbackPort(String[] args){
if (args.length > 0){
for (String arg : args){
String[] paramArray = arg.split("=");
if (paramArray.length > 1){
String key = paramArray[0];
String value = paramArray[1];
if (LOGBACK_PORT_PARAMETER.equals(key)){
logbackPort = value;
break;
}
}
}
}
}
}
Application调用并传递args
```package com.innovation.ic.sc.gateway;
import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure;
import com.innovation.ic.b1b.util.LogbackConfigUtil;
import org.mybatis.spring.annotation.MapperScan;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
@SpringBootApplication(scanBasePackages = "com.innovation.ic.sc")
@MapperScan("com.innovation.ic.sc.base.mapper")
@EnableDiscoveryClient
@EnableAutoConfiguration(exclude = {DruidDataSourceAutoConfigure.class})
public class SCGatewayApplication {
private static final Logger log = LoggerFactory.getLogger(SCGatewayApplication.class);
public static void main(String[] args) {
LogbackConfigUtil.setLogbackPort(args);
SpringApplication.run(SCGatewayApplication.class, args);
log.info("sc-gateway服务启动成功");
}
}
logkacb配置文件
<configuration debug="false">
<define name="webPort" class="com.innovation.ic.b1b.util.LogbackConfigUtil" />
<property name="LOG_HOME" value="../logs" />
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
</encoder>
</appender>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<FileNamePattern>${LOG_HOME}/sc-gateway-${webPort}-%d{yyyy-MM-dd}.%i.log</FileNamePattern>
<MaxHistory>30</MaxHistory>
<MaxFileSize>100MB</MaxFileSize>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
</encoder>
</appender>
<logger name="com.innovation.ic.sc" level="INFO"/>
<logger name="com.apache.ibatis" level="INFO"/>
<root level="INFO">
<appender-ref ref="STDOUT" />
<appender-ref ref="FILE"/>
</root>
</configuration>
启动参数idea测试,会生成一个sc-gateway-32222-2022-10-18.1.log文件,路径在项目的相对路径下的logs目录下
loback官网地址,学习一定要在官网文档学习,学习一定要在官网文档学习,学习一定要在官网文档学习。
loback文档官网地址
dev环境启动命令以及传递的端口参数
nohup java -jar /data/project/sc/sc-gateway/target/sc-gateway.jar --Xms1024M --Xmx2048M --XX:PermSize=256M --XX:MaxPermSize=256M --server.port=32101 --spring.application.name=sc-gateway >/data/project/log/sc-gateway32101.log 2>&1 &