tarsdocs
  • Readme.md
  • CLA
  • LICENSE
  • 基础介绍
    • 简介
    • 基础概念
    • 基础通信协议 Tars
    • 统一通信协议 Tup
    • 开发模式介绍
    • 模板配置
    • 服务市场
    • 服务扩展
    • 框架版本说明
  • 开源版框架介绍
    • 开源版本部署
      • 部署总体介绍
      • Docker环境安装
      • Mysql安装
      • 框架源码部署(Linux/Mac)
      • 框架源码部署(Windows)
      • 框架Docker部署
      • 框架节点部署
      • 业务服务容器化
      • 框架K8SDocker 部署
      • 框架K8STARS 部署
      • 框架K8SFramework 部署(强烈推荐)
      • 框架更新及扩容
      • 调用链升级注意事项
      • TarsWeb-v3.0.3升级说明
    • 开源版管理平台
      • TarsWeb说明
      • web用户体系
      • web管理平台 API
  • 企业版本介绍
    • 企业版说明
    • 框架集群化机制
    • 框架单节点机制
    • 使用二进制包部署
    • 使用容器部署
    • 业务服务一主多备机制
    • 命令行控制终端
    • IP-LIST级联缓存机制
    • 多数据中心管理
    • 多网络支持
    • 第三方服务管理
    • 数据产生和管理机制
    • 密码重置
    • TarsPython介绍
  • 框架关键特性
    • 业务配置
    • 服务监控
    • 无损发布/重启
    • 调用链
    • IDC分组
    • 鉴权功能
  • TarsCPP
    • 编译
    • 快速开发入门
    • 使用指南
    • 开发规范
    • 服务线程说明文档
    • protobuf 协议支持文档
    • 第三方协议支持
    • HTTP1 支持
    • HTTP2 支持
    • TLS 通信支持
    • Push 功能说明
    • PushCallback 功能说明
    • Cookie 支持
    • 队列模式
    • 手动绑定
    • 性能数据
    • 2.x 版本变化
    • 3.x 版本变化
    • 协程版本说明
    • 基础类库说明
    • [案例]
      • 框架快速入门
      • Http 服务示例
  • TarsJava
    • 快速开始
    • 快速开发入门
    • [使用指南]
      • Tars 服务开发与上线
      • HTTP 服务开发与上线
      • 生成接口调用文件
    • [性能测试]
      • tars java 压测代码
  • TarsGo
    • 基本介绍
    • 快速开始
    • 使用指南
    • cmake 管理代码
    • pb2tarsgo
    • 性能数据
    • 使用示例
  • TarsPHP
    • 搭建 php 环境
    • 快速开发入门
    • [快速起步]
      • 搭建 HttpServer
      • 搭建 TimerServer
      • 搭建 TcpServer
      • 搭建 WebSocketServer
      • 弹幕活动实战
    • [框架简介]
      • 简介
      • tars-server
      • tars-client
      • tars-config
      • tars-deploy
      • tars-extension
      • tars-log
      • tars-monitor
      • tars-registry
      • tars-report
      • tars-utils
      • tars2php
    • [高阶应用]
      • PHP 的 Swoole 框架如何接入 Tars
      • 与 thinkphp 结合使用
      • 与 Swoft 结合使用
      • 与 Laravel 结合使用
      • 与 Yii2 结合使用
      • 持续集成方案
    • [其他]
      • 常见问题
      • 如何 Debug
      • changelog
      • 其他外部文档
  • Tars.js
    • 基本介绍
    • 脚手架
    • 快速开发入门
    • @tars/stream
    • @tars/rpc
    • @tars/logs
    • @tars/config
    • @tars/monitor
    • @tars/notify
    • @tars/utils
    • @tars/dyeing
    • @tars/node-agent
    • @tars/winston-tars
    • tars2node
  • K8SFramework
    • [安装和使用说明]
      • 介绍
      • 特性
      • 安装
      • 升级
      • 云原生运维
      • 管理平台
      • 证书
    • [开发环境构建]
      • Dockerfile 说明
      • 服务发布流程说明
      • 制作基础编译镜像
      • 制作业务服务镜像
      • 制作 Helm 包
      • 发布业务镜像到 K8S 集群
      • 服务发布示例
      • 如何调试业务服务
  • 服务扩展
    • 云告警
    • 接口及压测工具
    • 网关服务
    • dcache缓存服务
    • 发送邮件服务
    • 一致性存储服务
    • 一致性存储web管理平台
    • 唯一计数服务
  • 常见问题
    • 安装常见问题
    • Issues
    • Issues-tarscpp
    • Issues-tarsjava
    • Issues-tarsgo
    • Issues-tarsphp
  • 开源合作
    • TarsFramework 项目 Git 合作规范
  • 直播视频
    • B 站 TARS 培训系列课程
  • 相关文章
    • TARS 技术文章
  • 其它资源分享
    • 下载
    • Tars 介绍.pptx
    • TarsPHP 解密.pdf
    • TarsJava 本地调试.pdf
    • 微服务在腾讯的业务实践.pptx
Powered by GitBook
On this page
  • @tars/logs
  • 安装
  • 例子
  • 初始化
  • 使用
  • 按大小滚动日志(TarsRotate)
  • 时间相关(DateFormat)
  • 按时间滚动日志(TarsDate)
  • 远程日志(TarsRemote)
  • 染色

Was this helpful?

  1. Tars.js

@tars/logs

Previous@tars/rpcNext@tars/config

Last updated 3 years ago

Was this helpful?

@tars/logs

基于 与 开发,符合 TARS 框架规范的日志组件,其中包含染色日志、滚动(大小、时间)日志。

安装

npm install @tars/logs

例子

输出滚动日志

var logger = new tarsLogs("TarsRotate");

输出名为 access 的按天日志

var logger = new tarsLogs("TarsDate", "access");

输出名为 access 的按天日志,只写本地不写远程日志

var logger = new tarsLogs("TarsDate", "access", {
  logTo: tarsLogs.LogTo.Local,
});

输出名为 access 的按小时日志

var logger = new tarsLogs("TarsDate", "access", {
  format: tarsLogs.DateFormat.LogByHour,
});

输出名为 access 的按 20 分钟 滚动的日志,文件名为 2015-01-01_10:00 这样的格式

var logger = new tarsLogs("TarsDate", "access", {
  format: new tarsLogs.DateFormat.LogByMinute(20, "%Y-%m-%d_%H:%M"),
});

指定输出 INFO 级别的日志信息

logger.info("data");
logger.info("data1", "data2", "data3");

指定当前 INFO 级别的日志输出需要染色

logger.info("data", logger.getDyeingObj(true));

初始化

如果服务在 TARS平台 上运行,则无需配置此项

如果服务在 本地环境 中调试,所有日志类型都将输出至 Console

可通过调用 tarsLogs.setConfig(data) 静态方法进行初始化

data(String|Object) 可以为 tars 配置文件路径 或 已配置的 (@tars/utils).Config 实例。

使用

实例化

var tarsLogs = require("@tars/logs");

var logger = new tarsLogs(type, [name, options]);

type(String) 日志类型:

  • TarsRotate: 按大小滚动日志

  • TarsDate: 按时间滚动日志

  • TarsRemote: 远程日志

name(String) 用户自定义的文件名(可不填)

options(Object) 根据不同的日志类型,存在不同的参数,但下面的参数是各类型共享的:

  • hasSufix: 日志文件名是否带.log 后缀, 默认值为 true

  • hasAppNamePrefix: 是否允许框架在日志文件名上增加业务相关的标识, 默认值为 true

  • concatStr: 日志文件名中字符间的连接符, _默认值为 __

  • separ: 日志内容项之间的分隔符, 默认值为 |

options 中的其它参数,请详见不同日志类型的说明项。

在正常情况下,相同一个日志文件应该共享相同的一个 logger,而不是多次进行实例化

日志输出

在 TARS 中存在有 4 种日志级别 INFO、DEBUG、WARN、ERROR 可用对应的方法进行输出

logger.info([data], [...]);
logger.debug([data], [...]);
logger.warn([data], [...]);
logger.error([data], [...]);

如需要染色,请详见 染色 节

文件名与行号

默认情况下,输出的日志中包含调用输出方法的代码所在的 文件名:行号。

可通过如下示例进行自定义(用于封装模块)或者关闭(以提高性能)。

关闭文件名与行号输出:

logger.info("data", {
  lineno: false,
});

自定义文件名与行号输出:

logger.info("data", {
  lineno: "app.js:123",
});

日志级别

日志级别的优先级为: INFO < DEBUG < WARN < ERROR < NONE

其中,除了按大小滚动日志(TarsRotate)默认级别为 DEBUG,其它均为 INFO。

如需变更日志级别,可调用 logger.setLevel(level) 方法,传入需要的日志级别即可:

logger.setLevel('info');
logger.setLevel('none'); // none 为一种特殊的日志级别,所有日志均不输出

如果服务在 TARS平台 上运行:

  • 模块会接收 日志级别变更 的管理命令,自动变更当前日志级别。

  • 模块会读取 TARS 配置文件中 tars.application.server.logLevel 节,以配置日志级别。

  • 以上两项日志级别的配置仅针对 按大小滚动日志(TarsRotate) 生效。

日志内容格式(Formatter)

模块提供精简 Formatter.Simple() 与复杂 Formatter.Detail() 两种日志处理方法:

  • 复杂: 日期 时间|PID|日志级别|文件名与行号|内容

  • 精简: 日期 时间|内容

默认情况下,不同日志类型会使用不同的处理方法。

按大小滚动日志(TarsRotate)

在初始化类型为 TarsRotate 的 logger 时, options 还接受如下参数:

  • maxFiles: 最大的文件总数(也就是例子中的 n), 默认值为 10

  • maxSize: 单文件最大大小(单位为 bytes), 默认值为 10M

  • formatter: 定义日志内容格式化方法, 默认值为 Formatter.Detail()

时间相关(DateFormat)

定义了与时间相关的日志(TarsDate、TarsRemote)滚动的处理方法:

  • 按 1 天日志:LogByDay([interval, pattern])

  • 按 1 小时日志:LogByHour([interval, pattern])

  • 按 10 分钟日志:LogByMinute([interval, pattern])

  • 自定义格式日志:LogByCustom(pattern)

其中, interval 为日志滚动间隔, pattern 为日志文件名中时间的格式

一般情况下,可直接使用字面量:

var logger = new tarsLogs("TarsDate", "access", {
  format: tarsLogs.DateFormat.LogByDay,
});

但如果需要自定义间隔或日志文件名,则需要实例化:

var logger = new tarsLogs('TarsDate', 'access', {
	format : new tarsLogs.DateFormat.LogByDay(3, '%Y-%m-%d');
});

按时间滚动日志(TarsDate)

在初始化类型为 TarsDate 的 logger 时, options 还接受如下参数:

  • format: 创建新文件的间隔,为 DateFormat 对象, 默认值为 FORMAT.LogByDay

  • formatter: 定义日志内容格式化方法, 默认值为 Formatter.Simple()

  • logTo: 日志发送的目标,为 LogTo 枚举, 默认值为 LogTo.Both

LogTo 枚举中有 3 项可选:

  • LogTo.Remote: 仅打远程日志(tars.tarslog.LogObj)

  • LogTo.Local: 仅打本地日志

  • LogTo.Both: 远程 + 本地

请注意:仅当 LogTo.Local 时,options.format 才可为 DateFormat.LogByCustom

远程日志(TarsRemote)

染色

在每一条日志写入时可以指定是否需要对此日志进行染色(也就是说,染色的开关并不在初始化的时而在日志写入时)。

仅有 按大小滚动(TarsRotate) 与 按时间滚动(TarsDate) 输出的日志可以进行染色。

染色的日志不仅按照之前逻辑进行输出,也会按照相同的逻辑会多输出一份放在 $LOG_PATH$/tars_dyeing/ 目录下。

染色日志总是全量输出(忽略当前日志级别进行输出)。

染色对象

染色对象标识了当前染色的状态(是否需要染色 及 附加信息)。

为了便于使用,本模块封装了染色对象的生成方式。可通过 logger.getDyeingObj() 来获取染色对象。

打开染色

logger.getDyeingObj(true);

打开染色并设置染色的 val 为 guid,key 为 guid|sn

logger.getDyeingObj(true, "guid", "guid|sn");

实际应用中,不应调用此方法生成染色对象,而应直接使用其他模块提供的染色对象

符合染色标准的其它模块,均会提供 Object.getDyeingObj() 方法,可通过调用它获取染色对象,而不是使用此模块的方法。

使用

需要对某条日志进行染色时,需在调用 logger 特定方法(日志级别)的最后一个参数传入 染色对象。

输出日志内容为 data1 data2 并 强制染色的日志

logger.info("data1", "data2", logger.getDyeingObj(true));

输出日志内容为 data 并根据 rpc.server 调用链上的染色信息进行染色的日志

tars.TestImp.prototype.echo = function (current, i) {
  logger.info("data", current.getDyeingObj());
};

方法支持多重参数, 详情可见

更多详细信息,请参考

关于 Formatter 的详情,请访问

关于 TarsRotate 的详情,请访问

关于 DateFormat 的详情,请访问

关于 TarsDate 的详情,请访问

由于远程日志实现(与参数)较为复杂,请访问获取详细信息。

染色对象需要通过 提供的方法生成。

关于染色的详细信息,请访问 获取。

rpc 具体获取染色对象的方式,请详见 __

winston
winston-tars
util.format()
@tars/dyeing
@tars/dyeing
@tars/rpc
@tars/winston-tars.Metadata
@tars/winston-tars.Formatter
@tars/winston-tars.TarsRotate
@tars/winston-tars.DateFormat
@tars/winston-tars.TarsDate
winston-tars.TarsRemote