跳转至

logger_plugin

TSL语言的跨平台实现的日志插件。

安装

(已集成到mytsl发行版中)

动态库文件:logger_plugin.dll或者liblogger_plugin.so。

把相关的动态库文件拷贝到执行服务器或者TSL目录的plugin目录。

(如果需要下载兼容正式版的Windows版本的动态库文件请访问这里)。

使用指南

提供的TSL函数:

log_init

log_init(file): 用指定的log文件初始化。不初始化的话,默认是输出到控制台。

  • 参数列表

    参数 描述
    file 日志文件路径

    支持魔法参数:

    魔法参数 描述
    @console(0) 关闭控制台输出,默认是文件和控制台同时输出。
    @daily(1) log文件名自动加日期,并按天来记录。
    @color(1) 控制台支持打印颜色。
    @utf8(1) 将日志文件和内容转成utf8格式(在Linux下面方便查看)
  • 返回值 成功返回1,否则返回0

  • 例子
    log_init("c:/temp/my.log", @console(0), @utf8(1));
    log_info("my log....");
    

如果不调用log_init就进行日志,将会打印到控制台。

log_set_level

log_set_level(level): 设置log的level。

  • 参数列表

    参数 描述
    level 日志级别

    日志级别:

    level
    trace 0
    debug 1
    info 2
    warning 3
    error 4
    critical 5
    off 6

    "off" 是关闭log输出。

  • 返回值 返回当前level的单字母简写。

  • 例子

log_set_level("debug"); // 设置level到debug

log_set_pattern

log_set_pattern(pattern): 设置输出样式。默认样式是:"[%Y-%m-%d %H:%M:%S][%L] %v"

  • 参数列表

    参数 描述
    pattern 样式

支持的样式参见附录。

  • 返回值 总是返回1

  • 例子

log_set_pattern("[%Y-%m-%d %H:%M:%S][%L][%n] %v");

log_flush

log_flush(): 刷新输出。

  • 参数列表 无
  • 返回值 无

  • 例子

log_flush();

log_flush_on

log_flush_on(level): 设置刷新输出的级别。

  • 参数列表

    参数 描述
    level 日志级别
  • 返回值 无

  • 例子
    log_flush_on("error");
    

log_trace

log_trace(format, ...): log trace消息。

  • 参数列表

    参数 描述
    format 格式,具体格式请参见附录
  • 返回值 日志成功返回1,否则返回0

  • 例子
    log_trace("trace日志...");
    

log_debug

log_debug(format, ...): log debug消息。

  • 参数列表

    参数 描述
    format 格式,具体格式请参见附录
  • 返回值 日志成功返回1,否则返回0

  • 例子
    log_debug("debug日志...");
    

log_info

log_info(format, ...): log info消息。

  • 参数列表

    参数 描述
    format 格式,具体格式请参见附录
  • 返回值 日志成功返回1,否则返回0

  • 例子
    log_info("info日志...");
    

log_warn

log_warn(format, ...): log warn消息。

  • 参数列表

    参数 描述
    format 格式,具体格式请参见附录
  • 返回值 日志成功返回1,否则返回0

  • 例子
    log_warn("warn日志...");
    

log_error

log_error(format, ...): log error消息。

  • 参数列表

    参数 描述
    format 格式,具体格式请参见附录
  • 返回值 日志成功返回1,否则返回0

  • 例子
    log_error("error日志...");
    

log_critical

log_critical(format, ...): log critical消息。

  • 参数列表

    参数 描述
    format 格式,具体格式请参见附录
  • 返回值 日志成功返回1,否则返回0

  • 例子
    log_critical("critical日志...");
    

log_init_ex

log_init_ex(name, file): 用指定的log文件初始化命名的logger。

  • 参数列表

    参数 描述
    name 名称
    file 日志文件路径

    系统保留了defaultconsole这两个名称,不能用于自定义日志的名称。

    支持魔法参数:

    魔法参数 描述
    @console(0) 关闭控制台输出,默认是文件和控制台同时输出。
    @daily(1) log文件名自动加日期,并按天来记录。
    @color(1) 控制台支持打印颜色。
    @utf8(1) 将日志文件和内容转成utf8格式(在Linux下面方便查看)
  • 返回值 成功返回1,否则返回0

  • 例子
    log_init_ex("mylogger", "c:/temp/my.log", @console(0), @utf8(1));
    log_info_ex("mylogger", "my log....");
    

log_set_level_ex

log_set_level_ex(name, level): 设置log的level。

  • 参数列表

    参数 描述
    name 名称
    level 日志级别

    日志级别:

    level
    trace 0
    debug 1
    info 2
    warning 3
    error 4
    critical 5
    off 6

    "off" 是关闭log输出。

  • 返回值 返回当前level的单字母简写。

  • 例子

log_set_level_ex("mylogger", "debug"); // 设置level到debug

log_set_pattern_ex

log_set_pattern_ex(name, pattern): 设置输出样式。默认样式是:"[%Y-%m-%d %H:%M:%S][%L] %v"

  • 参数列表

    参数 描述
    name 名称
    pattern 样式

支持的样式参见附录。

  • 返回值 总是返回1

  • 例子

log_set_pattern_ex("mylogger", "[%Y-%m-%d %H:%M:%S][%L][%n] %v");

log_flush_ex

log_flush_ex(name): 刷新输出。

  • 参数列表

    参数 描述
    name 名称
  • 返回值 无

  • 例子

log_flush_ex("mylogger");

log_flush_on_ex

log_flush_on_ex(name, level): 设置刷新输出的。

  • 参数列表

    参数 描述
    name 名称
    level 日志级别
  • 返回值 无

  • 例子
    log_flush_on_ex("mylogger", "error");
    

log_trace_ex

log_trace_ex(name, format, ...): log trace消息。

  • 参数列表

    参数 描述
    name 名称
    format 格式,具体格式请参见附录
  • 返回值 日志成功返回1,否则返回0

  • 例子
    log_trace_ex("mylogger", "trace日志...");
    

log_debug_ex

log_debug_ex(name, format, ...): log debug消息。

  • 参数列表

    参数 描述
    name 名称
    format 格式,具体格式请参见附录
  • 返回值 日志成功返回1,否则返回0

  • 例子

    log_debug_ex("mylogger", "调试日志...");
    

log_info_ex

log_info(name, format, ...): log info消息。

  • 参数列表

    参数 描述
    name 名称
    format 格式,具体格式请参见附录
  • 返回值 日志成功返回1,否则返回0

  • 例子
    log_info_ex("mylogger", "INFO日志...");
    

log_warn_ex

log_warn_ex(name, format, ...): log warn消息。

  • 参数列表

    参数 描述
    name 名称
    format 格式,具体格式请参见附录
  • 返回值 日志成功返回1,否则返回0

  • 例子
    log_warn_ex("mylogger", "warn志...");
    

log_error_ex

log_error_ex(name, format, ...): log error消息。

  • 参数列表

    参数 描述
    name 名称
    format 格式,具体格式请参见附录
  • 返回值 日志成功返回1,否则返回0

  • 例子
    log_error_ex("mylogger", "Error日志...");
    

log_critical_ex

log_critical_ex(name, format, ...): log critical消息。

  • 参数列表

    参数 描述
    name 名称
    format 格式,具体格式请参见附录
  • 返回值 日志成功返回1,否则返回0

  • 例子
    log_critical_ex("mylogger", "critical日志...");
    

范例

输出控制

log_debug("debug message"); // 由于默认的level是info,所以debug信息会被过滤,不会输出
log_info("{} ok!", "test"); // 输出: [2021-08-05 16:31:37.411][140597][I] test ok!
                            // 默认前缀模式是:[时间][线程号][level]
log_set_level("debug");     // 设置level到debug
log_debug("debug message"); // 现在可以输出debug的信息了:[2021-08-05 16:31:37.411][140597][D] debug message
log_set_pattern("%v");      // 可以设置输出的样式只有内容,不加前缀
log_info("{}+{}={}", 1,2,3);// 输出:1+2=3

附录

Format格式

格式字符串包含用大括号括起来的“替换字段” {}。未包含大括号的任何内容都被视为文本,将原样复制到输出中。如果需要在文本中包含{},可以通过{{和}}来转义它。“替换字段” 将会被后续的参数替换。

例如:

log_info("{}", 1)                 // 输出: 1
log_info("{}", 2.3)               // 输出: 2.3
log_info("{}-{}", 1, 2)           // 输出: 1-2
log_info("{:t}", 20190101t)       // 输出:2019-01-01
log_info("{:t}", 20190101.093001t)// 输出:2019-01-01 09:30:01

fmt_plugin支持的格式一致。

LOG消息样式

flag meaning example
%v The actual text to log "some user text"
%t Thread id "1232"
%P Process id "3456"
%n Logger's name "some logger name"
%l The log level of the message "debug", "info", etc
%L Short log level of the message "D", "I", etc
%a Abbreviated weekday name "Thu"
%A Full weekday name "Thursday"
%b Abbreviated month name "Aug"
%B Full month name "August"
%c Date and time representation "Thu Aug 23 15:35:46 2014"
%C Year in 2 digits "14"
%Y Year in 4 digits "2014"
%D or %x Short MM/DD/YY date "08/23/14"
%m Month 01-12 "11"
%d Day of month 01-31 "29"
%H Hours in 24 format 00-23 "23"
%I Hours in 12 format 01-12 "11"
%M Minutes 00-59 "59"
%S Seconds 00-59 "58"
%e Millisecond part of the current second 000-999 "678"
%f Microsecond part of the current second 000000-999999 "056789"
%F Nanosecond part of the current second 000000000-999999999 "256789123"
%p AM/PM "AM"
%r 12 hour clock "02:55:02 pm"
%R 24-hour HH:MM time, equivalent to %H:%M "23:55"
%T or %X ISO 8601 time format (HH:MM:SS), equivalent to %H:%M:%S "23:55:59"
%z ISO 8601 offset from UTC in timezone ([+/-]HH:MM) "+02:00"
%E Seconds since the epoch "1528834770"
%% The % sign "%"
%^ start color range (can be used only once) "[mylogger] [info(green)] Some message"
%$ end color range (for example %^[+++]%$ %v) (can be used only once) [+++] Some message
%o Elapsed time in milliseconds since previous message 456
%i Elapsed time in microseconds since previous message 456
%u Elapsed time in nanoseconds since previous message 11456
%O Elapsed time in seconds since previous message 4

Level的单字母简写

级别 简写
trace T
debug D
info I
warning W
error E
critical C
off O