接到一个需求,需要对日志数据进行打印(区分主日志文件,只输出跟特定业务相关的数据),以便kafka可以对文件进行数据抽取,存储到hive;
虽然log4j用的很多,但是有时候真自己配,还是有点生的,记录一下
1.yml文件
Configuration:
status: info
monitorInterval: 30
properties:
property:
name: log.path
value: /opt/service/tmp/logs
Appenders:
RollingFile:
- name: error_file
DefaultRolloverStrategy:
Delete:
basePath: ${log.path}
IfFileName:
glob: "*log"
IfLastModified:
age: 1d
fileName: ${log.path}/error.log
filePattern: "${log.path}/error_%d{yyyy-MM-dd}.log"
PatternLayout:
Pattern: "[%X{request_id}] %-d{yyyy-MM-dd HH:mm:ss.SSS} - [%p] [%C{1} %M] %m%n"
Policies:
TimeBasedTriggeringPolicy:
interval: 1
modulate: true
- name: bus_file
# 清除策略
DefaultRolloverStrategy:
Delete:
basePath: ${log.path}
IfFileName:
glob: "*log"
IfLastModified:
age: 1d
fileName: ${log.path}/bus.log
filePattern: "${log.path}/bus_%d{yyyy-MM-dd}.log"
PatternLayout:
Pattern: "[%X{request_id}] %-d{yyyy-MM-dd HH:mm:ss.SSS} - [%p] [%C{1} %M] %m%n"
Policies:
TimeBasedTriggeringPolicy:
interval: 1
modulate: true
- name: feedback_dump_appender
DefaultRolloverStrategy:
Delete:
basePath: ${log.path}
IfFileName:
glob: "*log"
IfLastModified:
age: 1d
fileName: ${log.path}/dump/feedback_log.log
filePattern: "${log.path}/slow_sql%d{yyyy-MM-dd}.log"
PatternLayout:
Pattern: "%m%n"
Policies:
TimeBasedTriggeringPolicy:
interval: 1
modulate: true
Console:
name: console
target: SYSTEM_OUT
PatternLayout:
Pattern: "[%X{request_id}] %-d{yyyy-MM-dd HH:mm:ss} - [%p] [%C{1} %M] %m%n"
Loggers:
Root:
level: info
AppenderRef:
- ref: error_file
level: ERROR
- ref: bus_file
level: INFO
- ref: console
level: debug
Logger:
- name: feedback_dump_logger
level: info
AppenderRef:
- ref: feedback_dump_appender
level: INFO
2.java代码
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
private Logger dumpLog = LoggerFactory.getLogger("feedback_dump_logger");
# 日志输出
String dump = String.format("%d\u0001%s\u0001%s\u0001%s\u0001%d\u0001%s\u0001%d\u0001%d\u0001%s",
System.currentTimeMillis(),
scene,
bgv2,
imei,
uid,
company,
infoId,
originCateId,
JSON.toJSONString(maps)
);
3.日志输出
总结: appder定义好之后,定义Logger器就可以了!