Logback使用conversionRule自定义字符的坑
Logback使用conversionRule自定义字符的坑背景想在logback输出的文件目录中加入ip,使用<conversionRule conversionWord="ip" converterClass="com.test.config.LogIpConfig" />结果一直报错:There is no conversion class registered for conv
·
Logback使用conversionRule自定义字符的坑
背景
想在logback输出的文件目录中加入ip,使用
<conversionRule conversionWord="ip" converterClass="com.test.config.LogIpConfig" />
结果一直报错:
There is no conversion class registered for conversion word [ip]
[ip] is not a valid conversion word
原因
- 当需要在日志记录中添加自定义文本时,仅支持在
<pattern>
中添加ip或其他自定义的字段,不支持在目录或文件名<fileNamePattern>
中使用。 - 可能是格式或类书写错误。如class路径错误,logger的name指向不存在的包名。
当使用失败时,建议使用删除大法,将各种配置都删除,只留下一个纯净的结构,如
http://logback.qos.ch/manual/layouts.html
public class MySampleConverter extends ClassicConverter {
long start = System.nanoTime();
@Override
public String convert(ILoggingEvent event) {
long nowInNanos = System.nanoTime();
return Long.toString(nowInNanos-start);
}
}
<configuration>
<conversionRule conversionWord="nanos"
converterClass="chapters.layouts.MySampleConverter" />
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%-6nanos [%thread] - %msg%n</pattern>
</encoder>
</appender>
<root level="DEBUG">
<appender-ref ref="STDOUT" />
</root>
</configuration>
其他方法
如果想在文件目录或文件名中添加自定义字段,可以引入springboot中的参数<springProperty scope="context" name="LOG_HOME" source="logPath"/>
,此处不展开。
如果需要使用springboot配置中不存在的参数,可以在logback-spring.xml中加入<define>
如
<define name="initIp" class="com.test.util.InitIpUtil"/>
<springProperty scope="context" name="port" source="server.port" />
...
<fileNamePattern>
/data/logs/java-${initIp}-${port}
</fileNamePattern>
@Component
public class InitIpUtil extends PropertyDefinerBase {
@Override
public String getPropertyValue() {
return initIpAndPort();
}
public static String initIpAndPort() {
String subIp = null;
try{
InetAddress addr = InetAddress.getLocalHost();
String ip = addr.getHostAddress();
subIp = ip.substring(ip.lastIndexOf(".",ip.lastIndexOf(".")-1)+1);
}catch (Exception e){
e.printStackTrace();
}
return subIp;
}
}
即可在目录或文件名中添加自己想要的参数。
更多推荐
已为社区贡献1条内容
所有评论(0)