YSTest: platform::Logger类 参考

YSTest PreAlpha_b900_20201012 The YSLib Test Project

类 | Public 类型 | Public 成员函数 | 静态 Public 成员函数 | Public 属性 | Private 属性 | 友元 | 所有成员列表
platform::Logger类 参考
Diagnostic » Tracing

日志记录器。 更多...

`#include <Debug.h>`

platform::Logger 的协作图:
[图例]

## 类

struct | Formatter
| 日志格式化器。 更多...

## Public 类型

using | Level = Descriptions::RecordLevel
using | Filter = ystdex::function< bool(Level, Logger &)>
using | Sender = ystdex::function< void(Level, Logger &, const char *)>

## Public 成员函数

| DefDeCtor (Logger) Logger(const Logger &)
| 无参数构造：使用过滤器和发送器。 更多...
| Logger (Logger &&) ynothrow
| 转移构造：转移过滤等级、转移过滤器和发送器，使用新创建的互斥量。 更多...
template<typename _func >
auto | AccessRecord (_func f) -> decltype(f())
| 访问日志记录执行指定操作。 更多...
void | DoLog (Level, const char *)
| 转发等级和日志至发送器。 更多...
| PDefH (void, DoLog, Level lv, string_view sv) ImplRet(DoLog(lv
sv data())) private | PDefH (void, DoLogRaw, Level lv, string_view sv) ImplRet(DoLogRaw(lv
| 转发等级和日志至发送器。 更多...
template<typename _fCaller , typename... _tParams>
void | Log (Level level, _fCaller &&f, _tParams &&... args)
| 以参数指定的等级和调用结果记录日志。 更多...
template<typename... _tParams>
void | TraceFormat (Level level, _tParams &&... args) ynothrow
| 以参数指定的等级和参数指定的格式记录日志并保证无异常抛出。 更多...

## 静态 Public 成员函数

static YB_PURE bool | DefaultFilter (Level, Logger &) ynothrow
| 默认过滤：仅允许等级不大于阈值的日志被记录。 更多...
static | YB_NONNULL (3) void DefaultSendLog(Level
| 默认发送器：使用 std::cerr 输出。 更多...
static | YB_NONNULL (3) void DefaultSendLogToFile(Level
| 默认发送器：使用 stderr 输出。 更多...
sv data())) private sv static data())) public Sender | FetchDefaultSender (string_view="YFramework")
| 转发等级和异常对象至发送器。 更多...
static void | LogFailure () ynothrow
| 记录失败输出。 更多...

## Public 属性

Level | FilterLevel = Descriptions::Debug
| 过滤等级：可用于参照以决定是否过滤的阈值。 更多...
PDefHOp(Logger &,=, const Logger &logger) ImplRet(ystdex void | SetSender (Sender)
| 设置过滤器。 更多...
static Logger const char * | ynothrowv

## Private 属性

Filter | filter {DefaultFilter}
Sender | sender {FetchDefaultSender()}
Concurrency::recursive_mutex | record_mutex {}
| 日志记录互斥量。 更多...

## 友元

YF_API friend void | swap (Logger &, Logger &) ynothrow
| 交换：交换所有互斥量以外的数据成员。 更多...

## 详细描述

日志记录器。

自从
  build 498

在文件 Debug.h 第 96 行定义.

## 成员类型定义说明

## ◆ Filter

using platform::Logger::Filter = ystdex::function<bool(Level, Logger&)>

在文件 Debug.h 第 117 行定义.

## ◆ Level

using platform::Logger::Level = Descriptions::RecordLevel

在文件 Debug.h 第 116 行定义.

## ◆ Sender

using platform::Logger::Sender = ystdex::function<void(Level, Logger&, const char*)>

注解
  传递的第三参数非空。

在文件 Debug.h 第 119 行定义.

## 构造及析构函数说明

## ◆ Logger()

platform::Logger::Logger | ( | Logger && |  | ) |

转移构造：转移过滤等级、转移过滤器和发送器，使用新创建的互斥量。

后置条件
  被转移的日志对象具有默认的过滤器和发送器。

参见
  LWG 2062 。

## 成员函数说明

## ◆ AccessRecord()

template<typename _func >

auto platform::Logger::AccessRecord | ( | _func | f | ) | -> decltype(f())

inline

访问日志记录执行指定操作。

注解
  线程安全：互斥访问。

自从
  build 558

在文件 Debug.h 第 192 行定义.

引用了 CHRLib::f().

函数调用图:

## ◆ DefaultFilter()

static YB_PURE bool platform::Logger::DefaultFilter | ( | Level | ,
|  | Logger & |
| ) |  |

static

默认过滤：仅允许等级不大于阈值的日志被记录。

## ◆ DefDeCtor()

platform::Logger::DefDeCtor | ( | Logger |  | ) | const &

无参数构造：使用过滤器和发送器。

自从
  build 803

注解
  异常中立：同 FetchDefaultSender 。
  由 ystdex::function 的构造模板提供的保证确保无其它异常抛出。

复制构造：复制过滤等级、过滤器和发送器，使用新创建的互斥量。

## ◆ DoLog()

void platform::Logger::DoLog | ( | Level | ,
|  | const char * |
| ) |  |

转发等级和日志至发送器。

注解
  忽略字符串参数对应的空数据指针参数。
  保证串行发送。

## ◆ FetchDefaultSender()

sv data ())) private sv static data ())) public Sender platform::Logger::FetchDefaultSender | ( | string_view | = `"YFramework"` | ) |

static

转发等级和异常对象至发送器。

根据异常对象确定日志字符串并发送。若转发时抛出异常，则记录此异常。 对并发操作保证串行发送，且整个过程持有锁 record_mutex 以保证连续性。

取新建的平台相关的默认发送：按指定的标签取平台相关实现。

前置条件
  断言：参数的数据指针非空。

注解
  非 Android 平台：无异常抛出。

自从
  build 658

## ◆ Log()

template<typename _fCaller , typename... _tParams>

void platform::Logger::Log | ( | Level | level,
|  | _fCaller && | f,
|  | _tParams &&... | args
| ) |  |

inline

以参数指定的等级和调用结果记录日志。

注解
  第一参数指定的等级决定过滤条件。 日志内容由第一参数以外的参数调用决定。

若符合过滤条件，则调用 DoLog 记录日志。

在文件 Debug.h 第 275 行定义.

引用了 CHRLib::args, CatchExpr, CHRLib::e, CHRLib::f(), filter, YSLib::level, TryExpr , 以及 yforward.

函数调用图:

## ◆ LogFailure()

static void platform::Logger::LogFailure | ( |  | ) |

static

记录失败输出。

注解
  用于保证无异常抛出的日志输出的失败操作。

自从
  build 888

引用了 CHRLib::args, CatchExpr, CHRLib::f(), YSLib::level, TryExpr , 以及 yforward.

函数调用图:

## ◆ PDefH() [1/2]

platform::Logger::PDefH | ( | void | ,
|  | DoLog | ,
|  | Level | lv,
|  | string_view | sv
| ) |  |

自从
  build 659

## ◆ PDefH() [2/2]

sv data ())) private platform::Logger::PDefH | ( | void | ,
|  | DoLogRaw | ,
|  | Level | lv,
|  | string_view | sv
| ) |  |

转发等级和日志至发送器。

前置条件
  间接断言：字符串参数对应的数据指针非空。

自从
  build 510
  build 659

## ◆ TraceFormat()

template<typename... _tParams>

void platform::Logger::TraceFormat | ( | Level | level,
|  | _tParams &&... | args
| ) |  |

inline

以参数指定的等级和参数指定的格式记录日志并保证无异常抛出。

调用 Log 记录日志。 若抛出异常，则捕获并使用 LogFilure 记录失败。

在文件 Debug.h 第 334 行定义.

引用了 CHRLib::args, YSLib::level , 以及 yforward.

## ◆ YB_NONNULL() [1/2]

static platform::Logger::YB_NONNULL | ( | 3 |  | ) |

static

默认发送器：使用 std::cerr 输出。

前置条件
  间接断言：第三参数非空。
  非 DS 平台：std::cerr 不设置在错误时抛出异常。

注解
  DS 平台：空操作。

## ◆ YB_NONNULL() [2/2]

static platform::Logger::YB_NONNULL | ( | 3 |  | ) |

static

默认发送器：使用 stderr 输出。

自从
  build 626

## 友元及相关函数文档

## ◆ swap

YF_API friend void swap | ( | Logger & | ,
|  | Logger & |
| ) |  |

friend

交换：交换所有互斥量以外的数据成员。

自从
  build 804

## 类成员变量说明

## ◆ filter

Filter platform::Logger::filter {DefaultFilter}

private

不变性
  `bool(filter)` 。

在文件 Debug.h 第 130 行定义.

## ◆ FilterLevel

Level platform::Logger::FilterLevel = Descriptions::Debug

过滤等级：可用于参照以决定是否过滤的阈值。

在文件 Debug.h 第 125 行定义.

## ◆ record_mutex

Concurrency::recursive_mutex platform::Logger::record_mutex {}

mutableprivate

日志记录互斥量。

自从
  build 894

仅 DoLog 和 DoLogException 在发送日志时使用的锁。 使用递归锁以允许用户在发送器中间接递归调用 DoLog 和 DoLogException 。

在文件 Debug.h 第 140 行定义.

## ◆ sender

Sender platform::Logger::sender {FetchDefaultSender()}

private

不变性
  `bool(Sender)` 。

在文件 Debug.h 第 132 行定义.

## ◆ SetSender

PDefHOp (Logger&, =, const Logger& logger) ImplRet(ystdex void platform::Logger::SetSender(Sender)

设置过滤器。

自从
  build 879

注解
  忽略空过滤器。

设置发送器。

注解
  忽略空发送器。

自从
  build 519

在文件 Debug.h 第 183 行定义.

被这些函数引用 YSLib::Environment::Environment().

## ◆ ynothrowv

static Logger const char * platform::Logger::ynothrowv

在文件 Debug.h 第 211 行定义.

该类的文档由以下文件生成:

- Debug.h