Abstract Class yii\log\Target
Target 是所有日志目标类的基类。
日志目标对象将根据 \yii\log\level 和 $categories 属性过滤 yii\log\Logger 记录的消息。 它还可以将过滤后的消息导出到目标定义的特定目标, 例如电子邮件,文件。
级别过滤器和类别过滤器是组合的, 即,仅处理满足两个过滤条件的消息。 此外,您可以指定 $except 以排除某些类别的消息。
公共属性
| 属性 | 类型 | 描述 | 被定义在 |
|---|---|---|---|
| $behaviors | yii\base\Behavior[] | List of behaviors attached to this component | yii\base\Component |
| $categories | array | 需要记录的消息类别列表。 默认为空,表示所有类别。 您可以在类别末尾使用星号,以便可以使用该类别来匹配共享相同公共前缀的类别。 例如,'yii\db*' 将匹配以 'yii\db\' 开头的类别,例如 'yii\db\Connection'。 | yii\log\Target |
| $enabled | boolean|callable | 一个布尔值或一个可调用的函数返回值。 从 2. | yii\log\Target |
| $except | array | 需要排除的消息类别列表。 默认为空,表示没有需要排除的消息。 如果此属性不为空,则此处列出的任何类别都将从 $categories 中排除。 您可以在类别末尾使用星号,以便该类别可用于匹配共享相同公共前缀的类别。 例如,'yii\db*' 将匹配以 'yii\db\' 开头的类别,例如 'yii\db\Connection'。 | yii\log\Target |
| $exportInterval | integer | 累积多少条消息后才导出。默认值为 1000。 请注意,应用程序终止时将始终会导出消息。 如果将此属性设置为 0,则只会在应用程序终止之时导出消息。 | yii\log\Target |
| $levels | integer | 需要记录的消息级别。 默认为 0,表示所有可用级别。 | yii\log\Target |
| $logVars | array | 需要记录在消息中的PHP预定义变量的列表。
请注意,必须可以通过 $GLOBALS 访问变量。否则将不会记录。
默认是 ['_GET', '_POST', '_FILES', '_COOKIE', '_SESSION', '_SERVER']。
从版本 2. |
yii\log\Target |
| $messages | array | 此日志目标从记录器中获得的消息。 请参阅 yii\log\Logger::$messages 以获取有关消息结构的详细信息。 | yii\log\Target |
| $microtime | boolean | 是否以微秒记录时间。 默认是 false。 | yii\log\Target |
| $prefix | callable | 一个可调用的函数,它返回一个字符串,以便为每个导出的消息添加前缀。
如果未设置,将使用 getMessagePrefix(),该消息在消息前面加上上下文信息。
例如用户 IP,用户 ID 和会话 ID。
可调用的函数应该是 function ($message)。 |
yii\log\Target |
公共方法
| 方法 | 描述 | 被定义在 |
|---|---|---|
| __call() | Calls the named method which is not a class method. | yii\base\Component |
| __clone() | This method is called after the object is created by cloning an existing one. | yii\base\Component |
| __construct() | Constructor. | yii\base\BaseObject |
| __get() | Returns the value of a component property. | yii\base\Component |
| __isset() | Checks if a property is set, i.e. defined and not null. | yii\base\Component |
| __set() | Sets the value of a component property. | yii\base\Component |
| __unset() | Sets a component property to be null. | yii\base\Component |
| attachBehavior() | Attaches a behavior to this component. | yii\base\Component |
| attachBehaviors() | Attaches a list of behaviors to the component. | yii\base\Component |
| behaviors() | Returns a list of behaviors that this component should behave as. | yii\base\Component |
| canGetProperty() | Returns a value indicating whether a property can be read. | yii\base\Component |
| canSetProperty() | Returns a value indicating whether a property can be set. | yii\base\Component |
| className() | Returns the fully qualified name of this class. | yii\base\BaseObject |
| collect() | 处理给定的日志消息。 此方法将使用 $levels 和 $categories 过滤给定的消息。 如果需要,它还会将过滤结果导出到特定介质(例如电子邮件)。 | yii\log\Target |
| detachBehavior() | Detaches a behavior from the component. | yii\base\Component |
| detachBehaviors() | Detaches all behaviors from the component. | yii\base\Component |
| ensureBehaviors() | Makes sure that the behaviors declared in behaviors() are attached to this component. | yii\base\Component |
| export() | 将日志 $messages 导出到特定目标。 子类必须实现此方法。 | yii\log\Target |
| filterMessages() | 根据类别和级别过滤给定的消息。 | yii\log\Target |
| formatMessage() | 为便于显示将日志消息格式化为字符串。 | yii\log\Target |
| getBehavior() | Returns the named behavior object. | yii\base\Component |
| getBehaviors() | Returns all behaviors attached to this component. | yii\base\Component |
| getEnabled() | 检查日志目标是否已启用。 | yii\log\Target |
| getLevels() | yii\log\Target | |
| getMessagePrefix() | 返回要添加到给定消息前缀的字符串。 如果配置了 $prefix,它将返回回调的结果。 默认将返回用户 IP,用户 ID 和会话 ID 作为前缀。 | yii\log\Target |
| hasEventHandlers() | Returns a value indicating whether there is any handler attached to the named event. | yii\base\Component |
| hasMethod() | Returns a value indicating whether a method is defined. | yii\base\Component |
| hasProperty() | Returns a value indicating whether a property is defined for this component. | yii\base\Component |
| init() | Initializes the object. | yii\base\BaseObject |
| off() | Detaches an existing event handler from this component. | yii\base\Component |
| on() | Attaches an event handler to an event. | yii\base\Component |
| setEnabled() | 设置是否启用此日志目标。 | yii\log\Target |
| setLevels() | 设置此目标需要记录的消息级别。 | yii\log\Target |
| trigger() | Triggers an event. | yii\base\Component |
受保护的方法
| 方法 | 描述 | 被定义在 |
|---|---|---|
| getContextMessage() | 生成要记录的上下文信息。 默认会存储用户信息,系统变量等。 | yii\log\Target |
| getTime() | 返回格式化以后的消息时间戳,格式为:'Y-m-d H:i:s'。 如果 $microtime 配置为 true,则格式为 'Y-m-d H:i:s.u'。 | yii\log\Target |
属性详情
需要记录的消息类别列表。 默认为空,表示所有类别。 您可以在类别末尾使用星号,以便可以使用该类别来匹配共享相同公共前缀的类别。 例如,'yii\db*' 将匹配以 'yii\db\' 开头的类别,例如 'yii\db\Connection'。
一个布尔值或一个可调用的函数返回值。 从 2.0.13 版本开始,可以使用函数返回值作为参数。
函数返回值可用于动态设置是否启用日志目标。 例如,要仅在当前用户登录时启用日志, 您可以按如下方式配置目标:
'enabled' => function() {
return !Yii::$app->user->isGuest;
}
需要排除的消息类别列表。 默认为空,表示没有需要排除的消息。 如果此属性不为空,则此处列出的任何类别都将从 $categories 中排除。 您可以在类别末尾使用星号,以便该类别可用于匹配共享相同公共前缀的类别。 例如,'yii\db*' 将匹配以 'yii\db\' 开头的类别,例如 'yii\db\Connection'。
参见 $categories.
累积多少条消息后才导出。默认值为 1000。 请注意,应用程序终止时将始终会导出消息。 如果将此属性设置为 0,则只会在应用程序终止之时导出消息。
需要记录的消息级别。 默认为 0,表示所有可用级别。
需要记录在消息中的PHP预定义变量的列表。
请注意,必须可以通过 $GLOBALS 访问变量。否则将不会记录。
默认是 ['_GET', '_POST', '_FILES', '_COOKIE', '_SESSION', '_SERVER']。
从版本 2.0.9 开始,可以使用其他语法: 每个元素都可以指定为以下之一:
var- 会记录var。var.key- 只会记录var[key]。!var.key- 会排除var[key]。
请注意,如果您需要记录 $_SESSION,无论是否使用了会话, 您都必须在请求开始时立即打开它。
此日志目标从记录器中获得的消息。 请参阅 yii\log\Logger::$messages 以获取有关消息结构的详细信息。
是否以微秒记录时间。 默认是 false。
一个可调用的函数,它返回一个字符串,以便为每个导出的消息添加前缀。
如果未设置,将使用 getMessagePrefix(),该消息在消息前面加上上下文信息。 例如用户 IP,用户 ID 和会话 ID。
可调用的函数应该是 function ($message)。
方法详情
处理给定的日志消息。 此方法将使用 $levels 和 $categories 过滤给定的消息。 如果需要,它还会将过滤结果导出到特定介质(例如电子邮件)。
| public void collect($messages, $final) | ||
| $messages | array | 记录要处理的消息。 有关每条消息的结构,请参见 yii\log\Logger::$messages。 |
| $final | boolean | 是否在当前应用程序结束时调用此方法。 |
将日志 $messages 导出到特定目标。 子类必须实现此方法。
| public abstract void export() |
根据类别和级别过滤给定的消息。
| public static array filterMessages($messages, $levels = 0, $categories = [], $except = []) | ||
| $messages | array | 要过滤的消息。 消息结构遵循 yii\log\Logger::$messages 中的消息结构。 |
| $levels | integer | 要过滤的消息级别。 值 0 表示允许所有级别。 |
| $categories | array | 要过滤的消息类别。如果为空,则表示允许所有类别。 |
| $except | array | 要排除的消息类别。如果为空,则表示允许所有类别。 |
| return | array | 过滤后的消息。 |
|---|---|---|
为便于显示将日志消息格式化为字符串。
| public string formatMessage($message) | ||
| $message | array | 要格式化的日志消息。 消息结构遵循 yii\log\Logger::$messages 中的消息结构。 |
| return | string | 格式化后的消息 |
|---|---|---|
生成要记录的上下文信息。 默认会存储用户信息,系统变量等。
| protected string getContextMessage() | ||
| return | string | 上下文信息。如果是空字符串,则表示没有上下文信息。 |
|---|---|---|
检查日志目标是否已启用。
| public boolean getEnabled() | ||
| return | boolean | 一个指示是否启用此日志目标的布尔值。 |
|---|---|---|
| public integer getLevels() | ||
| return | integer | 需要记录的消息级别。 默认为 0,表示所有可用级别。 |
|---|---|---|
返回要添加到给定消息前缀的字符串。 如果配置了 $prefix,它将返回回调的结果。 默认将返回用户 IP,用户 ID 和会话 ID 作为前缀。
| public string getMessagePrefix($message) | ||
| $message | array | 正在导出的消息。 消息结构遵循 yii\log\Logger::$messages 中的消息结构。 |
| return | string | 前缀字符串 |
|---|---|---|
返回格式化以后的消息时间戳,格式为:'Y-m-d H:i:s'。 如果 $microtime 配置为 true,则格式为 'Y-m-d H:i:s.u'。
| protected string getTime($timestamp) | ||
| $timestamp | float | |
设置是否启用此日志目标。
| public void setEnabled($value) | ||
| $value | boolean|callable | 一个布尔值或一个可调用的函数返回值。 从 2.0.13 版本开始,可以使用函数返回值作为参数。 函数返回值可用于动态设置是否启用日志目标。 例如,要仅在当前用户登录时启用日志, 您可以按如下方式配置目标:
|
设置此目标需要记录的消息级别。
参数可以是消息级别名称的数组, 也可以是表示消息级别值的整数。 有效级别名称包括:'error','warning','info','trace' 和 'profile'; 有效级别值包括:yii\log\Logger::LEVEL_ERROR,yii\log\Logger::LEVEL_WARNING,yii\log\Logger::LEVEL_INFO, yii\log\Logger::LEVEL_TRACE 和 yii\log\Logger::LEVEL_PROFILE。
举个例子,
['error', 'warning']
// 另一种表达方式是:
Logger::LEVEL_ERROR | Logger::LEVEL_WARNING
| public void setLevels($levels) | ||
| $levels | array|integer | 需要记录的消息级别。 |
| throws | yii\base\InvalidConfigException | 如果 $levels 值不正确。 |
|---|---|---|