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 值不正确。 |
---|