springboot日志配置

默认日志logback:

默认情况下(什么都不需要配置),springboot使用Logback来记录日志,INFO级别输出到控制台。在运行应用程序或者测试示例时,就可以看到这些日志。
在这里插入图片描述
从图中可以看到日志内容如下:

  • 时间:精确到毫秒
  • 日志级别:FATAL>ERROR>WARN>INFO>DEBUF,等于设定级别的日志将不显示
  • 进程id:紫色数字
  • 分隔符:----标识实际日志的开始
  • 线程名:方括号里面(可能会截断控制台输出)
  • Logger名:通常使用源代码的类名
  • 日志内容

程序中自定义输出日志

@CompileStatic
@TypeChecked
@RestController
@RequestMapping('/account')
@Transactional
class AccountController
{
    private static final Logger logger= LoggerFactory.getLogger(AccountController.class)
    @RequestMapping(value = '/findJudicialAuction',method = RequestMethod.POST)
    String findJudicialAuction(@RequestBody() Map<String, String> message){
        logger.info(message.toString())
        def format = new SimpleDateFormat("yyyy-MM-dd")
        Date startTime,endTime
        if(message.get("startTime")!=null){
            startTime = format.parse(message.get("startTime"))
        }
        if(message.get("endTime")!=null){
            endTime = format.parse(message.get("endTime"))
        }
        def json = judicialAuctionDataService.query(message.get("province"), message.get("city"), message.get("district"), message.get("houseType"), message.get("communityId"), message.get("communityName"),
                message.get("address"), message.get("area") as Double, message.get("longitude") as Double, message.get("latitude") as Double, message.get("maxCount") as Integer, startTime,endTime, message.get("userName"), message.get("houseTypePm"))
        logger.info(json.toString())
        return json
    }
}

在这里插入图片描述

注解日志

@Slf4j
@CompileStatic
@TypeChecked
@RestController
@RequestMapping('/auction')
@Transactional
class JudicialAuctionDataProvider{
    @Autowired
    JudicialAuctionDataService judicialAuctionDataService


    @AES
    @RequestMapping(value = '/findJudicialAuction',method = RequestMethod.POST)
    String findJudicialAuction(@RequestBody() Map<String, String> message){
        LocalDate startTime,endTime
        if(message.get("startTime")!=null){
            startTime = LocalDate.parse(message.get("startTime"), DateTimeFormatter.ISO_DATE)
        }
        if(message.get("endTime")!=null){
            endTime = LocalDate.parse(message.get("endTime"), DateTimeFormatter.ISO_DATE)
        }
        def json = judicialAuctionDataService.query(message.get("province"), message.get("city"), message.get("district"), message.get("houseType"), message.get("communityId"), message.get("communityName"),
                message.get("address"), message.get("area") as Double, message.get("longitude") as Double, message.get("latitude") as Double, message.get("maxCount") as Integer, startTime,endTime, message.get("userName"), message.get("houseTypePm"))
        log.info(json.toString())
        return json
    }
}

在类名前加上@Slf4j,听过log.info()就可以直接输出日志了

日志位置及名称

在application.properties添加如下命令

# 日志
logging.file.name=logs/auctionApi.log

在项目的根目录下创建logs文件夹,在logs生成auctionApi.log日志文件

日志文件设置

由于日志服务一般都在applocationContext创建前就初始化了,它并不是必须通过spring的配置文件控制。因此通过系统属性和传统的spring boot外部配置文件依然可以很好的支持日志控制和管理。
根据不同的日志系统,可以按照下面的规则配置文件名,就能被正确的加载(不需要指定日志配置文件位置)

  • Logback:logback-spring.xml, logback-spring.groovy, logback.xml, logback.groovy
  • Log4j:log4j-spring.properties, log4j-spring.xml, log4j.properties, log4j.xml
  • Log4j2:log4j2-spring.xml, log4j2.xml
  • JDK (Java Util Logging):logging.properties
    这里使用的slf4j,所以命名为log4j.xml,其他的看情况而定
<?xml version="1.0" encoding="UTF-8" ?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
    <springProperty scope="context" name="logging.path" source="logging.path"/>
    <contextName>api</contextName>
    <!--控制台日志, 控制台输出 -->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度,%msg:日志消息,%n是换行符-->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} -%msg%n</pattern>
        </encoder>
    </appender>
    <!--文件日志, 按照每天生成日志文件 -->
    <appender name="FILE" class="ch.qos.logback.core.FileAppender">
        <file>logs/auctionApi.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--日志文件输出的文件名-->
            <fileNamePattern>logs/auctionApi.%d{yyyy-MM-dd}.log</fileNamePattern>
            <!--日志文件保留天数-->
            <maxHistory>90</maxHistory>
        </rollingPolicy>
        <append>true</append>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} -%msg%n</pattern>
            <charset>utf8</charset>
        </encoder>
        <!--日志文件最大的大小-->
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <MaxFileSize>500MB</MaxFileSize>
        </triggeringPolicy>
    </appender>

    <root level="DEBUG">
        <appender-ref ref="console" />
        <appender-ref ref="file" />
    </root>
</configuration>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值