当你想着鞋垫自己的东西的时候,或者说是整理下过去用过的工具,代码,这时候你就会想到看看github上比较好的代码,这里主要讲PHP的
估计在win上安装composer比较麻烦,或者不好用,但是你想用本地的wamp,那么你可以用虚拟机安装好composer,然后就可以下载你需要的。这里以我正在使用的monolog日志系统
composer require monolog/monolog
这样就会在当前目录生成和下载
vender就是统一的第三方插件的文件夹,composer.json就是配置文件,composer会根据这个去下载第三方,composer.lock会限制composer不会更新你安装过插件的版本,保持你们开发的稳定性
现在来说说monolog,本来就是安装PHP规范写的,文档也写的比较清楚,不过文档看完,你了解了设计思路,但是具体的应用需要自己在使用中慢慢发掘或者专门去测试一下
上代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
<?php
include
"vendor/autoload.php"
;
use
Monolog\logger;
use
Monolog\Handler\StreamHandler;
use
Monolog\Formatter\LineFormatter;
// include "vendor/monolog/monolog/tests/Monolog/LoggerTest.php";
//设定格式的地方
$dateFormat
=
"Y-n-j, g:i:a"
;
$output
=
"%datetime% > %channel%.%level_name% > %message% %context% %extra%\n"
;
$formatter
=
new
LineFormatter(
$output
,
$dateFormat
);
$log
=
new
Logger(
'myApp'
);
//$log = new Monolog\Logger("name");
$bug_log
=
new
StreamHandler(
'logs/development.log'
,logger::DEBUG);
$bug_log
->setFormatter(
$formatter
);
$log
->pushHandler(
$bug_log
);
$log
->pushHandler(
new
StreamHandler(
'logs/production.log'
,logger::WARNING));
$error
=
array
(
'12'
=>
'jack'
,
'13'
=>
'marry'
);
$error_string
=
'a error'
;
//$log->debug($error_string);
//$log->warning('This is a warning. No caring now');
//$log->info('Where Can I see you?');
// $logtest = new LoggerTest();
// $logtest->testGetName();
$log
->addInfo(
'Adding a new user'
,
array
(
'username'
=>
'Seldaek'
));
$log
->pushProcessor(
function
(
$record
) {
$record
[
'extra'
][
'dummy'
] =
'Hello world!now I cannot see the world outside.'
;
return
$record
;
});
//withName是单独复制,换个名字记录
$securityLogger
=
$log
->withName(
'security'
);
$securityLogger
->info(
'我涉及到的都是安全问题'
);
|
针对数据库的写法
上代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
use
Monolog\Logger;
use
Monolog\Handler\AbstractProcessingHandler;
class
PDOHandler
extends
AbstractProcessingHandler
{
private
$initialized
= false;
private
$pdo
;
private
$statement
;
public
function
__construct(PDO
$pdo
,
$level
= Logger::DEBUG,
$bubble
= true)
{
$this
->pdo =
$pdo
;
parent::__construct(
$level
,
$bubble
);
}
protected
function
write(
array
$record
)
{
if
(!
$this
->initialized) {
$this
->initialize();
}
$this
->statement->execute(
array
(
'channel'
=>
$record
[
'channel'
],
'level'
=>
$record
[
'level'
],
'message'
=>
$record
[
'formatted'
],
'time'
=>
$record
[
'datetime'
]->format(
'U'
),
));
}
private
function
initialize()
{
$this
->pdo->
exec
(
'CREATE TABLE IF NOT EXISTS monolog '
.
'(channel VARCHAR(255), level INTEGER, message LONGTEXT, time INTEGER UNSIGNED)'
);
$this
->statement =
$this
->pdo->prepare(
'INSERT INTO monolog (channel, level, message, time) VALUES (:channel, :level, :message, :time)'
);
$this
->initialized = true;
}
|
愿大家一路顺风,更多的学习更多优秀的代码,在使用完,休闲的时候看看人家的思路
愿法界众生,皆得安乐
本文转自 jackdongting 51CTO博客,原文链接:http://blog.51cto.com/10725691/1955540