Logback和grpc实现日志访问
日志方案
- ui和worker不一定再同一个机器上,看日志不能像看本地文件一样
- 日志放到es搜索引擎上
- 通过grpc通信获取远程日志信息
- 海豚调度的轻量级,选择了grpc实现远程访问日志的方案
方案说明
方案解释
自定义logback的FileAppender ,实现每个人物实例生成一个日志文件
FileAppender
public class TaskLogAppender extends FileAppender<ILoggingEvent> {
...
@Override
protected void append(ILoggingEvent event) {
if (currentlyActiveFile == null){
currentlyActiveFile = getFile();
}
String activeFile = currentlyActiveFile;
// thread name: taskThreadName-processDefineId_processInstanceId_taskInstanceId
String threadName = event.getThreadName();
String[] threadNameArr = threadName.split("-");
// logId = processDefineId_processInstanceId_taskInstanceId
String logId = threadNameArr[1];
...
super.subAppend(event);
}
}
以/流程定义id/流程实例id/任务实例id.log形式生成日志
public class TaskLogFilter extends Filter<ILoggingEvent> {
@Override
public FilterReply decide(ILoggingEvent event) {
if (event.getThreadName().startsWith("TaskLogInfo-")){
return FilterReply.ACCEPT;
}
return FilterReply.DENY;
}
}
原创:做时间的朋友