扩展 Yii2 自带的日志组件
<?php /**
* author : forecho <caizhenghai@gmail.com>
* createTime : 2015/12/22 18:13
* description:
*/
namespace common\components; use Yii;
use yii\helpers\FileHelper; class FileTarget extends \yii\log\FileTarget
{
/**
* @var bool 是否启用日志前缀 (@app/runtime/logs/error/20151223_app.log)
*/
public $enableDatePrefix = false; /**
* @var bool 启用日志等级目录
*/
public $enableCategoryDir = false; private $_logFilePath = ''; public function init()
{
if ($this->logFile === null) {
$this->logFile = Yii::$app->getRuntimePath() . '/logs/app.log';
} else {
$this->logFile = Yii::getAlias($this->logFile);
}
$this->_logFilePath = dirname($this->logFile); // 启用日志前缀
if ($this->enableDatePrefix) {
$filename = basename($this->logFile);
$this->logFile = $this->_logFilePath . '/' . date('Ymd') . '_' . $filename;
} if (!is_dir($this->_logFilePath)) {
FileHelper::createDirectory($this->_logFilePath, $this->dirMode, true);
} if ($this->maxLogFiles < 1) {
$this->maxLogFiles = 1;
}
if ($this->maxFileSize < 1) {
$this->maxFileSize = 1;
} }
}
在配置文件中这样使用:
'components' => [
'log' => [
'traceLevel' => YII_DEBUG ? 3 : 0,
'targets' => [
/**
* 错误级别日志:当某些需要立马解决的致命问题发生的时候,调用此方法记录相关信息。
* 使用方法:Yii::error()
*/
[
'class' => 'common\components\FileTarget',
// 日志等级
'levels' => ['error'],
// 被收集记录的额外数据
'logVars' => ['_GET', '_POST', '_FILES', '_COOKIE', '_SESSION','_SERVER'],
// 指定日志保存的文件名
'logFile' => '@app/runtime/logs/error/app.log',
// 是否开启日志 (@app/runtime/logs/error/20151223_app.log)
'enableDatePrefix' => true,
'maxFileSize' => 1024 * 1,
'maxLogFiles' => 100,
],
/**
* 警告级别日志:当某些期望之外的事情发生的时候,使用该方法。
* 使用方法:Yii::warning()
*/
[
'class' => 'common\components\FileTarget',
// 日志等级
'levels' => ['warning'],
// 被收集记录的额外数据
'logVars' => ['_GET', '_POST', '_FILES', '_COOKIE', '_SESSION','_SERVER'],
// 指定日志保存的文件名
'logFile' => '@app/runtime/logs/warning/app.log',
// 是否开启日志 (@app/runtime/logs/warning/20151223_app.log)
'enableDatePrefix' => true,
'maxFileSize' => 1024 * 1,
'maxLogFiles' => 100,
],
/**
* info 级别日志:在某些位置记录一些比较有用的信息的时候使用。
* 使用方法:Yii::info()
*/
[
'class' => 'common\components\FileTarget',
// 日志等级
'levels' => ['info'],
// 被收集记录的额外数据
'logVars' => ['_GET', '_POST', '_FILES', '_COOKIE', '_SESSION','_SERVER'],
// 指定日志保存的文件名
'logFile' => '@app/runtime/logs/info/app.log',
// 是否开启日志 (@app/runtime/logs/info/20151223_app.log)
'enableDatePrefix' => true,
'maxFileSize' => 1024 * 1,
'maxLogFiles' => 100,
],
/**
* trace 级别日志:记录关于某段代码运行的相关消息。主要是用于开发环境。
* 使用方法:Yii::trace()
*/
[
'class' => 'common\components\FileTarget',
// 日志等级
'levels' => ['trace'],
// 被收集记录的额外数据
'logVars' => ['_GET', '_POST', '_FILES', '_COOKIE', '_SESSION','_SERVER'],
// 指定日志保存的文件名
'logFile' => '@app/runtime/logs/trace/app.log',
// 是否开启日志 (@app/runtime/logs/trace/20151223_app.log)
'enableDatePrefix' => true,
'maxFileSize' => 1024 * 1,
'maxLogFiles' => 100,
],
],
],
],
确定不需要调parent::init(); 或者直接继承Target
不需要啊,因为已经继承了 \yii\log\FileTarget
扩展 Yii2 自带的日志组件的更多相关文章
- 细说JDK日志组件
1. 概述 JDK自带的日志组件在包java.util.logging下,如图: 2. 架构如上图所示,JDK日志组件核心元素包括:Logger,Handler,Filter和Formatter,他们 ...
- 如何扩展分布式日志组件(Exceptionless)的Webhook事件通知类型?
写在前面 从上一篇博客高并发.低延迟之C#玩转CPU高速缓存(附示例)到现在又有几个月没写博客了,啥也不说,变得越来越懒了,懒惰产生了拖延后遗症. 最近一周升级了微服务项目使用的分布式日志组件Exce ...
- net core体系-web应用程序-4net core2.0大白话带你入门-7asp.net core日志组件(Logger和Nlog)
asp.net core日志组件 日志介绍 Logging的使用 1. appsettings.json中Logging的介绍 Logging的配置信息是保存在appsettings.json配置 ...
- 基于log4net的日志组件扩展封装,实现自动记录交互日志 XYH.Log4Net.Extend(微服务监控)
背景: 随着公司的项目不断的完善,功能越来越复杂,服务也越来越多(微服务),公司迫切需要对整个系统的每一个程序的运行情况进行监控,并且能够实现对自动记录不同服务间的程序调用的交互日志,以及通一个服务或 ...
- Node 进阶:express 默认日志组件 morgan 从入门使用到源码剖析
本文摘录自个人总结<Nodejs学习笔记>,更多章节及更新,请访问 github主页地址.欢迎加群交流,群号 197339705. 章节概览 morgan是express默认的日志中间件, ...
- JDK自带的日志Logging
OK,现在我们来研究下JDK自带的日志Logger. 从jdk1.4起,JDK开始自带一套日志系统.JDK Logger最大的优点就是不需要任何类库的支持,只要有Java的运行环境就可以使用. 相对于 ...
- Java中日志组件详解
avalon-logkit Java中日志组件详解 lanhy 发布于 2020-9-1 11:35 224浏览 0收藏 作为开发人员,我相信您对日志记录工具并不陌生. Java还具有功能强大且功能强 ...
- .NetCore中的日志(1)日志组件解析
.NetCore中的日志(1)日志组件解析 0x00 问题的产生 日志记录功能在开发中很常用,可以记录程序运行的细节,也可以记录用户的行为.在之前开发时我一般都是用自己写的小工具来记录日志,输出目标包 ...
- C#组件系列———又一款日志组件:Elmah的学习和分享
前言:好久没动笔了,都有点生疏,12月都要接近尾声,可是这月连一篇的产出都没有,不能坏了“规矩”,今天还是来写一篇.最近个把月确实很忙,不过每天早上还是会抽空来园子里逛逛.一如既往,园子里每年这个时候 ...
随机推荐
- LeetCode题目:Best Time to Buy and Sell Stock
原题地址:https://leetcode.com/problems/best-time-to-buy-and-sell-stock/ 解决方法:动态规划,minimun存储的是当前价格中最小的. c ...
- 网络设备 | Cisco设备镜像文件损坏无法启动处理(tftp + rommon模式)
从正常的设备上通过tftp下载.bin镜像(G0/0口与pc设置同一网段互通) 进入坏的路由器rommon模式 在没有IOS情况下,默认进入了ROMMON模式:在ROMMON模式下输入以下命令设置f0 ...
- JavaScript Array splice函数
// 原来的数组 var array = ["one", "two", "four"]; // splice(position, numbe ...
- springMVC 【@response 返回对象自动变成json并且防止乱码】 & 【配置支持实体类中的@DateTimeFormat注解】
在springmvc的配置文件中加上这一段即可 <bean class="org.springframework.web.servlet.mvc.annotation.Annotati ...
- Maven - error in opening zip file
在一个maven工程中,有时执行mvn打包,部署,编译等命令,例如mvn clean install -DskipTests -U等命令时,会报类似(error in opening zip file ...
- 自己定义View时,用到Paint Canvas的一些温故,讲讲平时一些效果是怎么画的(基础篇 一)
转载请注明出处王亟亟的大牛之路 之前也有一个相似于画板的操作,可是不够具体,这边先补上链接.有兴趣的小伙伴能够看看http://blog.csdn.net/ddwhan0123/article/det ...
- mongoDB 高级查询语法
http://www.cnblogs.com/ITAres/articles/2084794.html本文参考自官方的手册:http://www.mongodb.org/display/DOCS/Ad ...
- 真正的Java学习从入门到精通
http://www.it.com.cn/f/edu/059/6/169189.htm 一. 工具篇JDK (Java Development Kit) JDK是整个Java的核心,包括了Java运行 ...
- Asp.net MVC 插件式应用框架
Asp.net MVC 插件式应用框架 2013年05月13日 10:16供稿中心: 互联网运营部 摘要:这几年来做了很多个网站系统,一直坚持使用asp.net mvc建站,每次都从头开始做Layou ...
- Ffmpeg 探测输入源类型
本文主要记录ffmpeg探测输入源的几个点,方便以后查阅代码.虽然项目时间很赶,还是找个时间做个记录, 好记性不如不如备忘录,时间久了终是会忘记.Ffmpeg版本为4.0.2,版本很重要,Ffmpeg ...