最近发布服务的时候,运行的程序出现错误,由于是后台发布的,没有程序框去查看报错内容,因此需要添加日志存储
后台运行Spring Boot程序时有时候不知道哪里报错,或者没有错误只是存在空值、空表之类的,这样就导致最终结果出现错误的情况,这种错误发生一般需要大量时间去排查,因此需要将相关数据写成日志输出,日志文件每天跟新,为了防止发现错误太迟,因此日志文件不能删除,可以在“logback.xml”中将日志自动根据时间压缩。
1、 将“logback.xml”放到resources下面
2、 代码中导入日志包
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
3、 定义日志方法并指定监测类,这里监测“WebTest.class”也就是本身
private Logger log = LoggerFactory.getLogger(WebTest.class);
4、写上相应级别的日志
log.INFO、log. WARN、log. ERROR 等等等
例子:
log.info("写下日志,或者相应数据");
5、代码
package com.nfplus.www.javaweb;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.text.ParseException;
@RestController
class WebTest {
//定义log
private Logger log = LoggerFactory.getLogger(WebTest.class);
//获取网页url的参数str1和str2
//也就是只要发布这个服务就可以获取url中对应位置的值
@RequestMapping(value = "/str1={str1}&str2={str2}")
public String sparkSubmit(@PathVariable("str1") String str1, @PathVariable("str2") String str2) throws ParseException {
try{
//将url参数存入日志中,用于检验时间参数
log.info("str1: " + str1 + "\tstr2: " + str2);
if (str1.equals(str2)){
//可以执行其他程序,最终return的值将出现在网页中
return "str1:" + str1 +"==="+ "str2"+str2;
}else {
//可以执行其他程序,最终return的值将出现在网页中
return "str1:" + str1 +"!!!"+ "str2"+str2;
}
} catch(Exception e){
e.printStackTrace();
//记录错误日志,如果程序在后台运行,将没有窗口可以查看哪里错了,所以记下错误内容,方便查看
log.error(e.getMessage());
return "error error error";
}
}
}
6、logback.xml下载地址
https://download.csdn.net/download/weixin_40717296/10318532
运行环境
执行jar包同级目录下创建“logs”文件夹
该程序是在hdfs用户上执行的,而不是在root用户,因此需要有对logs文件夹的所有权限,而又不能直接把文件夹赋予最高权限,因此在root创建文件夹后更该文件夹所属组