首页 > 其他分享 >phosphor-logging

phosphor-logging

时间:2024-03-11 18:24:54浏览次数:19  
标签:logging log elog API phosphor lg2

输出packages:

  • phosphor-logging-dev
  • phosphor-logging-base
  • phosphor-rsyslog-config

phosphor-logging-dev

提供日志API
phosphor-logging支持的error信息需要在phosphor-dbus-interfaces中预定义
phosphor-logging会搜索变量YAML_DIR目录下所有.yaml文件
将.errors.yaml结尾的文件,基于模板生成elog-errors.hpp,elog-lookup.cpp, elog-process-metadata.cpp

phosphor-logging提供两种结构化日志API:log和lg2

phosphor::logging::log

API header file Description
phosphor::logging::log log.hpp Log message to systemd journal
phosphor::logging::commit elog.hpp Create an error log entry based on journal entry with a specified MSG_ID
phosphor::logging::elog elog.hpp Create a journal log entry based on predefined error log information
phosphor::logging::report elog.hpp Create a journal log entry based on predefined error log information and commit the error

log.h中的API直接将日志发给journald
elog.h中的API会将日志先发送给提供xyz.openbmc_project.Logging.service的进程

phosphor::logging::lg2

lg2.hpp
扩展或优化phosphor::logging::log的功能
需要C++20支持

  • The mixture of template and temporary-constructed entry parameters is verbose and clumsy. lg2 is far more succinct in this regard.
  • The printf format-strings were error prone and potentially missed in code reviews. lg2 eliminates the need for printf strings by generating the formatting internally.
  • logging::log generates incorrect code location information (see openbmc/openbmc#2297). lg2 uses C++20's source_location to, by default, generate correct code location info and can optionally be passed a non-defaulted source_location for rare but appropriate cases.
  • The previous APIs had no mechanism to generate dynamic user-friendly strings which caused some developers to rely on external formatting libraries such as {fmt}. {KEY} replacement is now a core feature of the new API.
  • When running on a TTY, logging::log sent data to journal and the TTY was silent. This resulted in some applications creating custom code to write some data to stdout and some to logging::log APIs. lg2 automatically detects if it is running on a TTY and duplicates logging data to the console and the journal.

phosphor-log-manager

创建xyz.openbmc_project.Logging.service服务,监听日志请求,发送给journald

phosphor-rsyslog-conf

标签:logging,log,elog,API,phosphor,lg2
From: https://www.cnblogs.com/zl-yang/p/18066723

相关文章

  • OpenTelemetry Logging 思维导图,收藏
    Log是最常用、最自然的监控数据类型之一,具有以下的优点:日志的内容比指标更加丰富,可以提供更多的细节信息,帮助开发人员和运维人员更好地理解应用程序的运行状况,通过日志几乎可以重现、还原系统的完整工作过程。日志的格式灵活,可以方便的记录多样化的事件,包括错误、异常和警告等......
  • mysqldump: Error: Binlogging on server not active
    1.问题今天在备份数据库时遇到问题,提示二进制日志尚未开启,无法使用--master-data=2选项2.解决启用二进制日志记录,打开MySQL配置文件(通常是my.cnf或my.ini),添加以下选项即可。保存并重新启动MySQL服务器#开启二进制日志binloglog-bin=mysql-bin#开启Binlog一般只需......
  • Python日志logging模块
    Python日志logging模块logging---Python的日志记录工具—Python3.12.2文档Pythonlogging模块的基本使用、进阶使用详解_python中logging模块详解-CSDN博客logging模块架构日志级别默认的级别是“WARNING“,意味着只会追踪该级别及以上的事件。级别何时使用......
  • logging两种记录日志的调用方式
     使用 logging.getLogger() 方式:这种方式是通过代码直接操作和配置日志记录器。如前所述,你可以创建或获取一个日志记录器实例,然后为其设置级别、添加处理器等。例如:Python1importlogging23logger=logging.getLogger('my_module')4logger.setLevel(logging.DEBUG)5......
  • Python中logging模块
     在项目中我们常常需要打印日志,特别是在系统级项目上一般都会有自己日志模块,下面我们将介绍下Python中自带的logging模块(注意这是模块的名称并不是类)一、基本使用logging是一个包的名称,我们真正使用的是logging.Logger这个类。但是我们不能使用常规的方式进行初始化,......
  • UVA10225 Discrete Logging 题解
    题目传送门前置知识大步小步算法题意多组询问,每次询问依次给定\(p,a,b\),求\(a^{x}\equivb\pmod{p}\)的最小非负整数解,其中\(a,p\)互质。解法BSGS板子题,不做过多介绍。貌似本题比P3846[TJOI2007]可爱的质数/【模板】BSGS和BZOJ3239DiscreteLogging数据较强......
  • python日志模块logging
    示例代码#导入日志模块importloggingimportlogging.configfromconfigimportLOG_DIR,settingsdefconfig_logging():#定义日志配置方法config_dict={#定义日志配置字典'version':1,'disable_existing_loggers':False,'......
  • Logging模块的使用
    一、日志等级Logging中的日志等级如下:importloggingimportlogging#设置打印日志的级别,level级别以上的日志会打印出#level=logging.DEBUG、INFO、WARNING、ERROR、CRITICALdeflog_testing():#此处进行Logging.basicConfig()设置,后面设置无效logging.ba......
  • python logging 禁止日志输出
    1只会禁用特定日志记录器,其他日志记录器仍可以将消息输出到控制台格式:logging.getLogger("某日志记录器").disabled=True例:logging.getLogger("tornado").disabled=True2阻止这些日志记录器将日志消息传播到更高级别的父级记录器,从而不会显示在控制台上;请注意,其他日志......
  • PostgreSQL 数据库日志收集功能开启-参数 logging_collector 设置
    PostgreSQL数据库默认数据库日志收集功能为关闭,但PostgreSQL官方建议开启该参数,但该参数开启需要配合多个参数才能完成,本节只介绍logging_collector  ,如下一logging_collector(boolean)logging_collector   --是否开启日志收集开关,默认off,推荐onThisparameterenabl......