Diagnostic Log and Trace——为应用程序和上下文设置日志级别的方法

Posted andylauren

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Diagnostic Log and Trace——为应用程序和上下文设置日志级别的方法相关的知识,希望对你有一定的参考价值。

上一篇最后说道默认打印级别是info,这一篇我们就来讲解如何修改这个打印级别。

dlt-daemon 设置初始应用程序日志级别

有一个配置参数(参见 /etc/dlt.conf)ContextLogLevel。当新应用程序在守护程序中注册自己时,守护程序会将应用程序的日志级别设置为参数定义的值。

当应用程序使用 DLT_REGISTER_CONTEXT() 或 dlt_register_context() 注册自己时会发生这种情况。

环境变量 DLT_INITIAL_LOG_LEVEL

有一个名为 DLT_INITIAL_LOG_LEVEL 的环境变量。它允许设置每个应用程序上下文的日志级别。有关更多详细信息,请参阅初始日志级别。

应用程序在具有自定义日志级别的守护进程中注册自己。

当应用程序使用 DLT_REGISTER_CONTEXT_LL_TS() 或 dlt_register_context_ll_ts() 注册自己时会定义自己的打印级别。

客户端(例如 dlt_viewer)在运行时更改特定应用程序上下文的日志级别。

 上下文的初始日志级别由上述几种方法之一设置。

DLT 库运行时配置

通过设置不同的环境变量,可以在运行时配置 DLT 库——全局或针对特定进程。下面描述了这些环境变量:

初始日志级别

DLT 用户库的默认日志级别为 DLT_LOG_INFO(使用宏 DLT_REGISTER_CONTEXT 或 dlt_register_context() api 时)。这可以使用 DLT 客户端应用程序(例如 DLT Viewer)进行更改。但在 DLT 守护程序更新用户库之前,可能存在需要 DEBUG 或 VERBOSE 消息的情况。

在 DLT 库启动阶段有多种方法可以初始化日志级别。

可以通过导出环境变量 DLT_INITIAL_LOG_LEVEL 来做到这一点。通过这种方式,用户可以为上下文指定日志级别。

例如,应用程序“EXA1”具有两个上下文“CON1”和“CON2”。对于“CON1”日志级别 DEBUG 和“CON2”日志级别 VERBOSE 应使用。必须导出以下内容以配置库:

export DLT_INITIAL_LOG_LEVEL="EXA1:CON1:5;EXA1:CON2:6"

如果所有应用程序和上下文的日志级别都应该被初始化,那么:

导出 DLT_INITIAL_LOG_LEVEL="::2"

如果应初始化应用程序“EXA1”的所有上下文的日志级别,则:

导出 DLT_INITIAL_LOG_LEVEL="EXA1::2"

如果应初始化上下文“CON1”的日志级别,则:

导出 DLT_INITIAL_LOG_LEVEL=":CON1:2"

如果仅初始化应用程序“EXA1”的上下文“CON1”的日志级别,而忽略其他上下文,则:

导出 DLT_INITIAL_LOG_LEVEL="::0;EXA1:CON1:2"

如果环境中未导出 DLT_INITIAL_LOG_LEVEL 变量,则可以在配置文件 (/etc/dlt.conf) 中更改每个上下文的日志级别。

默认日志级别为 4 (DLT_LOG_INFO)

ContextLogLevel = 4

DLT 用户可以使用 dlt_register_context_ll_ts() api 来初始化每个上下文的日志级别。

例子:

//向守护进程注册新的上下文,初始日志级别为DLT_LOG_VERBOSE
dlt_register_context_ll_ts(&con_exa1, "CON", " First context ", DLT_LOG_VERBOSE, DLT_TRACE_STATUS_OFF);

上下文日志级别的优先级如下:

优先级 1:使用 dlt_register_context_ll_ts() api

优先级 2:使用环境变量 DLT_INITIAL_LOG_LEVEL

优先级 3:在配置文件 dlt.conf 中设置

本地打印模式

有时将用于调试的 DLT 消息直接打印到控制台可能很有用。要强制库这样做,可以导出以下环境变量:

导出 DLT_LOCAL_PRINT_MODE=FORCE_ON

库缓冲区大小

DLT 库包含一个消息缓冲区,以防 DLT 守护程序尚未启动或与 DLT 守护程序的连接暂时丢失。在库初始化时以最小大小分配缓冲区。如果需要存储更多消息,缓冲区会以定义的步长增长到最大大小。如果消息被刷新到 DLT 守护程序,缓冲区将减少到其最小大小。默认值和设置这些值的环境变量名称如下所述:

默认值 [以字节为单位] 环境变量名称

最小大小 50000 DLT_USER_BUFFER_MIN

最大大小 500000 DLT_USER_BUFFER_MAX

步长 50000 DLT_USER_BUFFER_STEP

例如,要将最大缓冲区大小限制为 250k 字节,可以导出以下内容:

导出 DLT_USER_BUFFER_MAX=250000

以上是关于Diagnostic Log and Trace——为应用程序和上下文设置日志级别的方法的主要内容,如果未能解决你的问题,请参考以下文章

Diagnostic Log and Trace——dlt的编译和安装

Diagnostic Log and Trace——开发人员如何使用 DLT

Diagnostic Log and Trace——为应用程序和上下文设置日志级别的方法

使用 Trace 和 TraceSource 的区别

Diagnostic and programming Interface

Diagnostic and programming Interface