兼容Java&Net的日志平台技术设计方案
【摘要】 这是给公司设计的统一日志平台方案,由于公司采用两套技术栈,所以设计及测试方案的时候,要兼容java、net,目前该方案已经用在项目中,现分享出来供大家参考,喜欢的朋友别忘了给个关注。
序号 |
时间 |
备注 |
0 |
2021/12/21 |
初始版本 |
一 功能需求
- 技术路线尽量统一
- NET、Java 项目的日志整合,方便查询
- 对业务入侵性低
二 技术实现
- 采用目前比较成熟的ELK日志系统,可对不同的开发语言进行收集。
三 架构实现
- 部署
- 数据流程
四 项目接入
- Net
- 添加 NLog.Targets.ElasticSearch 程序包
- 编辑Nlog.config
<extensions>
<add assembly="NLog.Targets.ElasticSearch"/>
</extensions>
<target xsi:type="ElasticSearch" name="ElasticLog" uri="http://192.168.1.215:9200" index="nlog-${date:format=yyyy.MM.dd}" documentType="logevent" includeAllProperties="true">
<field name="private" layout="${assembly-version}" />
</target>
<rules>
<logger name="Kibana" minlevel="Info" writeTo="ElasticLog"/>
</rules>
- 添加日志帮助 Utils
public class LogHelper
{
private static Logger logger;
private static string logRuleName = "Kibana";
static LogHelper()
{
logger = LogManager.GetLogger(logRuleName);
logger.LoggerReconfigured += logger_LoggerReconfigured;
}
static void logger_LoggerReconfigured(object sender, System.EventArgs e)
{
logger = LogManager.GetLogger(logRuleName);
}
public static void WirtError(string message)
{
logger.Log(LogLevel.Error, message);
}
public static void WirtDebug(string message)
{
logger.Log(LogLevel.Debug, message);
}
}
- 记录日志
LogHelper.WirtError("日志记录");
- Java
- 添加Logback日志组件
<dependency>
<groupId>net.logstash.logback</groupId>
<artifactId>logstash-logback-encoder</artifactId>
<version>5.1</version>
</dependency>
- 日志配置信息
<appender name="logstash"
class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<destination>xxx.xxx.xxx.xxx:xxxx</destination>
<queueSize>1048576</queueSize>
<!-- encoder必须配置,有多种可选 -->
<encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder">
<customFields>{"appname":"${Application_Name}"}</customFields>
</encoder>
<connectionStrategy>
<roundRobin>
<connectionTTL>5 minutes</connectionTTL>
</roundRobin>
</connectionStrategy>
</appender>
- Root配置
<springProfile name="log">
<root level="debug"><appender-ref ref="logstash" /></root>
</springProfile>
- 在logstash的配置文件路径,默认为/etc/logstash/conf.d添加文件biz_es.conf,文件名称可以自己根据实际需求修改。
input {
tcp {
##host:port就是上面appender中的 destination,这里其实把logstash作为服务,开启9601端口接收logback发出的消息
host => "0.0.0.0"
#模式选择为server
mode => "server"
port => xxxx
##格式json
codec => "json"
type => "server"
}
}
output {
if[type]=="server"{
elasticsearch {
action => "index"
#ES地址
hosts => "192.168.1.215"
#指定索引名字,不适用默认的,用来区分各个项目
index => "%{[appname]}-%{+YYYY.MM.dd}"
}
}
}
到这里elk搭建及java&net使用就完成了,如果使用过程中遇到什么问题,可以留言交流。
喜欢的朋友记得给个关注~
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)