常用的日志管理平台如efk,elk等都太过臃肿,推荐一个轻量级的日志平台zincsearch
页面如下
java 可以使用com.agidologback-elasticsearch-appender3.0.8 包然后改下logback.xml
logback.xml示例,本示例同时产生本地文件,需根据实际情况自行调整
<configuration debug="true">
<springProperty scope="context" name="springAppName" source="spring.application.name"/>
<!--默认配置-->
<property value="logs/demo" name="log.path"/>
<!-- 日志输出格式 -->
<property value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" name="log.pattern"/>
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<include resource="org/springframework/boot/logging/logback/console-appender.xml"/>
<appender name="ELASTIC" class="com.agido.logback.elasticsearch.ElasticsearchAppender">
<url>http://日志平台用户名:日志平台密码@日志平台地址:日志平台端口/es/_bulk</url>
<!--索引仅接受[a-zA-Z0-9_.-]-->
<index>demo-%date{yyyy-MM-dd}</index>
<authentication class="com.agido.logback.elasticsearch.config.BasicAuthentication" /> <!-- optional -->
<properties>
<!-- please note that <property> tags are also supported, esProperty was added for logback-1.3 compatibility -->
<esProperty>
<name>host</name>
<value>${HOSTNAME}</value>
<allowEmpty>false</allowEmpty>
</esProperty>
<esProperty>
<name>severity</name>
<value>%level</value>
</esProperty>
<esProperty>
<name>thread</name>
<value>%thread</value>
</esProperty>
<esProperty>
<name>stacktrace</name>
<value>%ex</value>
</esProperty>
<esProperty>
<name>logger</name>
<value>%logger</value>
</esProperty>
</properties>
<headers>
<header>
<name>Content-Type</name>
<value>application/json</value>
</header>
</headers>
</appender>
-<appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/info.log</file>
<!-- 循环政策:基于时间创建日志文件 -->
-<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 日志文件名格式 -->
<fileNamePattern>${log.path}/info.%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- 日志最大的历史 60天 -->
<maxHistory>60</maxHistory>
</rollingPolicy>
-<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
-<filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- 过滤的级别 -->
<level>INFO</level>
<!-- 匹配时的操作:接收(记录) -->
<onMatch>ACCEPT</onMatch>
<!-- 不匹配时的操作:拒绝(不记录) -->
<onMismatch>DENY</onMismatch>
</filter>
</appender>
-<appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/error.log</file>
<!-- 循环政策:基于时间创建日志文件 -->
-<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 日志文件名格式 -->
<fileNamePattern>${log.path}/error.%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- 日志最大的历史 60天 -->
<maxHistory>60</maxHistory>
</rollingPolicy>
-<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
-<filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- 过滤的级别 -->
<level>ERROR</level>
<!-- 匹配时的操作:接收(记录) -->
<onMatch>ACCEPT</onMatch>
<!-- 不匹配时的操作:拒绝(不记录) -->
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<root level="info">
<appender-ref ref="CONSOLE" />
<appender-ref ref="ELASTIC" />
<appender-ref ref="file_info"/>
<appender-ref ref="file_error"/>
</root>
<logger name="es-error-logger" level="INFO" additivity="false">
<appender-ref ref="CONSOLE" />
<appender-ref ref="ELASTIC" />
</logger>
<logger name="es-logger" level="INFO" additivity="false">
<appender name="ES_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- ... -->
<encoder>
<pattern>%msg</pattern>
</encoder>
</appender>
</logger>
<springProfile name="eslog">
<root level="info">
<appender-ref ref="ELASTIC"/>
<appender-ref ref="CONSOLE"/>
</root>
</springProfile>
</configuration>
这样就可以将日志实时接入到日志平台了,其他语言可以看官网文档或者查找es库来对接。
另外也可以修改源码加入实时报警机制,检测到关键词如"Error"发送到群机器人或者其他通知平台
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。