规则
- 默认情况下,打印
console
日志、all.log
、error.log
。 - 设置为
json
格式化,打印console
日志(非json
)、all.log
(json
格式,可用于filebeat
收集)。 - 开启
logstash
,打印console
日志,并将日志输出到logstash
(建议关闭掉file
输出)。 - 可配置启动完成关闭
console
日志。
功能
- 默认日志配置。
- 打印 json 日志文件。
- logstash 日志收集。
- 启动完成关闭控制台日志。
依赖引用
maven
<dependency> |
gradle
compile("net.dreamlu:mica-logging:${version}") |
配置
配置项 | 默认值 | 说明 |
---|---|---|
mica.logging.console.close-after-start | false | 是否启动完成后将自动关闭控制台日志,默认false。非开发环境建议设置为 true |
mica.logging.files.enabled | true | 是否开启日志文件 all.log 和 error.log |
mica.logging.files.use-json-format | false | 使用 json 格式化(需 logstash-logback-encoder 依赖),设置后文件打印 json 日志,可用于 filebeat 收集日志文件 |
特别注意: 需要配置服务名
和环境
,例如:
spring: |
logstash 日志
依赖项
- 开启
json
文件或logstash
必须添加该依赖!!!
<dependency> |
logstash
默认使用的disruptor
异步,额外还需要添加依赖
<dependency> |
配置项
配置项 | 默认值 | 说明 |
---|---|---|
mica.logging.logstash.enabled | false | 是否开启 logstash 日志收集,直接收集到 logstash |
mica.logging.logstash.destinations | localhost:5000 | 目标地址,默认: localhost:5000,示例: host1.domain.com,host2.domain.com:5560 |
mica.logging.logstash.queue-size | 512 | logstash 队列大小 |
loki 日志收集
依赖项
- java8
<dependency> |
- java11
<dependency> |
- 可选依赖 OkHttp
<dependency> |
- 可选依赖 apache httpclient
<dependency> |
- 可选依赖 Protobuf (ProtoBuf 日志编码必须)
<dependency> |
配置项
配置项 | 默认值 | 说明 |
---|---|---|
mica.logging.loki.enabled | false | 是否开启 loki 日志收集 |
mica.logging.loki.batch-max-bytes | 0 | |
mica.logging.loki.batch-max-items | 1000 | 通用配置 |
mica.logging.loki.batch-timeout-ms | 60000 | |
mica.logging.loki.drain-on-stop | true | |
mica.logging.loki.encoder | json | 编码方式 Json 或 ProtoBuf |
mica.logging.loki.format-label-pattern | appName=${appName},profile=${profile},host=${HOSTNAME},level=%level,requestId=%X{requestId:-} | format 配置 |
mica.logging.loki.format-label-pattern-extend | format 配置扩展格式同 format-label-pattern | |
mica.logging.loki.format-label-pair-separator | , | |
mica.logging.loki.format-label-key-value-separator | = | |
mica.logging.loki.format-label-no-pex | true | |
mica.logging.loki.format-message-pattern | l=%level c=%logger{20} t=%thread %msg %ex | 消息体格式 |
mica.logging.loki.format-sort-by-time | false | |
mica.logging.loki.format-static-labels | false | |
mica.logging.loki.http-auth-username | ||
mica.logging.loki.http-auth-password | ||
mica.logging.loki.http-auth-tenant-id | ||
mica.logging.loki.http-url | http 配置,默认:http://localhost:3100/loki/api/v1/push | |
mica.logging.loki.http-sender | http sender,支持 java11、OKHttp、ApacheHttp,默认: java11 | |
mica.logging.loki.http-connection-timeout-ms | 30000 | |
mica.logging.loki.http-request-timeout-ms | 5000 | |
mica.logging.loki.metrics-enabled | false | 开启 metrics |
mica.logging.loki.send-queue-max-bytes | 41943040 | |
mica.logging.loki.use-direct-buffers | true | 使用堆外内存 |
mica.logging.loki.verbose | false |
日志示例
文件日志
2021-03-25 21:03:55.275 INFO 2354 --- [XNIO-1 task-3] n.d.mica.mybatis.logger.SqlLogFilter : |
json 日志
{"loggingLevelRoot":"info","appName":"mica-fast","profile":"dev","level":"INFO","logger_name":"o.s.b.w.e.u.UndertowWebServer","message":"Undertow started on port(s) 8080 (http)","thread_name":"main","@timestamp":"2021-03-25T13:10:34.371Z"} |
logstash 日志(stdout)
{ |
日志服务(云服务接入)
- 阿里云日志服务(json格式):https://help.aliyun.com/document_detail/31720.htm
- 腾讯云云日志服务(json格式):https://cloud.tencent.com/document/product/614/17419