异常日志打印:
public static String getTrace(Throwable t) {
StringWriter stringWriter= new StringWriter();
PrintWriter writer= new PrintWriter(stringWriter);
t.printStackTrace(writer);
StringBuffer buffer= stringWriter.getBuffer();
return buffer.toString();
}
在发生异常的地方,直接调用此方法即可:
try(){
}catch(IoException e)
e.printStackTrace();
logger.error(getTrace(e));
}
分布式日志系统总结:日志系统 - HackerVirus - 博客园
背景:通常日志由服务器生成,输出到不同的文件中,一般会有系统日志、 应用日志、安全日志。这些日志分散地存储在不同的机器上。通常当系统发生故障时,工程师需要登录到各个服务器上,使用 grep / sed / awk 等 Linux 脚本工具去日志里查找故障原因。在没有日志系统的情况下,首先需要定位处理请求的服务器,如果这台服务器部署了多个实例,则需要去每个应用实例的日志目录下去找日志文件。每个应用实例还会设置日志滚动策略(如:每天生成一个文件),还有日志压缩归档策略等。这样一系列流程下来,对于我们排查故障以及及时找到故障原因,造成了比较大的麻烦。因此,如果我们能把这些日志集中管理,并提供集中检索功能,不仅可以提高诊断的效率,同时对系统情况有个全面的理解,避免事后救火的被动。
sl4j: // 添加slf4j日志实例对象 Logger logger = LoggerFactory.getLogger(Test.class); // 输出日志 logger.info("测试:{}", "输出日志");
log4j:
private Logger LOGGER = Logger.getLogger(Test.class);
public static void main(String[] args){
//记录 debug 级别的信息
LOGGER.debug("This is debug message.");
//记录 info 级别的信息
LOGGER.info("This is info message.");
//记录 error 级别的信息
LOGGER.error("This is error message.");
}