忘忧的小站

  • 首页
  • 文章归档
  • 日志
  • 关于页面

  • 搜索
分布式索引 索引 全文搜索 Lucene.Net GPS 音视频 过滤 AOP 时区 升级 ABP.Zero 数据备份 linux 阿里云盘 aliyunpan 面试题 Signalr S 汉字 css html 前端 拼音键盘 在线键盘 uniapp .Net Core XMLRPC Serilog LOKI Nlog 分布式日志 加密 总结 人生 Asp.Net Core Swagger Web Element-plus Quasar 匹配 JavaScript 正则 .Net 后台 架构师 Redis EF CORE MySQL 自考 英语 集群 Jenkins CI/DI 内网穿透 代理 ABP 学习 后端 软考

Asp.Net Core LOKI 轻量级日志服务实战 NLog

发表于 2022-04-22 | 分类于 .Net Core | 0 | 阅读次数 2092

docker-compose部署LOKI

docker-compose.yaml

version: "3"

networks:
  loki:

services:
  loki:
    image: grafana/loki:2.5.0
    ports:
      - "3100:3100"
    command: -config.file=/etc/loki/local-config.yaml
    networks:
      - loki

  promtail:
    image: grafana/promtail:2.5.0
    volumes:
      - /var/log:/var/log
    command: -config.file=/etc/promtail/config.yml
    networks:
      - loki

  grafana:
    image: grafana/grafana:latest
    ports:
      - "3000:3000"
    networks:
      - loki

当前目录执行命令

 docker-compose up -d

配置数据源

启动后使用浏览器访问 http://localhost:3000

image.png

账号admin 密码admin 登录成功后会提示修改密码

image.png

配置所用数据库
image.png
image.png
image.png
image.png

黄色代表我们配置成功

配置Asp.Net Core程序

使用到的库

  • Nlog
  • Nlog.Targets.Loki

初始化NLog时配置

image.png

Code

static Logger()
        {
            var config = new NLog.Config.LoggingConfiguration();
            string layout = LoggerConfig.Layout;

            
            AddTarget(new LokiTarget()
            {
                Name = "loki",
                BatchSize = 200,
                TaskDelayMilliseconds = 500,
                Endpoint = "http://122.112.248.242:3101/",
                OrderWrites = true,
                CompressionLevel=CompressionLevel.NoCompression,
                Layout = layout,
                Labels = { new LokiTargetLabel()
                {
                    Name= "Client",
                    Layout = "AppApi"
                } 
                }
            });
            
            NLog.LogManager.Configuration = config;
            void AddTarget(NLog.Targets.Target target)
            {
                config.AddTarget(target);
                config.AddRuleForAllLevels(target);
            }
        }

配置文件配置

Nlog.config

<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  
  <extensions>
    <add assembly="NLog.Loki" />
  </extensions>

  
  <targets>
    <target 
      name="loki" 
      xsi:type="loki"
      batchSize="200"
      taskDelayMilliseconds="500"
      endpoint="http://localhost:3100"
      username="myusername"
      password="secret"
      orderWrites="true"
      compressionLevel="noCompression"
      layout="${level}|${message}${onexception:|${exception:format=type,message,method:maxInnerExceptionLevel=5:innerFormat=shortType,message,method}}|source=${logger}">
      
      <label name="app" layout="my-app-name" />
      <label name="server" layout="${hostname:lowercase=true}" />
    </target>
  </targets>

  <rules>
    <logger name="*" minlevel="Info" writeTo="loki" />
  </rules>

</nlog>

最终效果

日志浏览

image.png

筛选条件

image.png

效果图
image.png

  • 本文作者: 忘忧
  • 本文链接: /archives/82
  • 版权声明: 本博客所有文章除特别声明外,均采用CC BY-NC-SA 3.0 许可协议。转载请注明出处!
# 分布式日志 # Nlog # LOKI
踩坑:.Net Core 项目使用 XMLRPC
Asp.Net Core LOKI 轻量级日志服务实战 Serilog
  • 文章目录
  • 站点概览
忘忧

忘忧

君子藏器于身,待时而动,何不利之有

44 日志
6 分类
60 标签
RSS
Github E-mail StackOverflow
Creative Commons
0%
© 2025 忘忧
由 Halo 强力驱动