这是单例模式写的一个方法
class Logger{
static private $_instance;
//单例模式
static public function getInstance()
{
if (NULL === self::$_instance) {
self::$_instance = new self();
}
return self::$_instance;
}
static public function log($msg,$br=0,$filename='')
{
//格式化时间
$time = date('Ymd');
//设置路径目录信息
$url = './log/'.$time.'.log';
//dirname() 函数返回路径中的目录部分。 https://www.w3school.com.cn/php/func_filesystem_dirname.asp
$dir_name=dirname($url);
//目录不存在就创建
if(!file_exists($dir_name))
{
//iconv防止中文名乱码
//mkdir() 函数创建目录。 https://www.runoob.com/php/func-filesystem-mkdir.html
$res = mkdir(iconv("UTF-8", "GBK", $dir_name),0777,true);
}
//打开文件资源通道 不存在则自动创建 var_export
$fp = fopen($url,"a");
//输出分隔符
if ($br == 1){
//数组需要格式化打印
if (is_array($msg)){
fwrite($fp,date("Y-m-d H:i:s")."\r\n".var_export($msg,true)."\r\n");//写入文件
}else{
fwrite($fp,date("Y-m-d H:i:s").var_export($msg,true)."\r\n");//写入文件
}
fwrite($fp,date("Y-m-d H:i:s").var_export('----------------------------------------------------------------',true)."\r\n");//写入文件
}else{
if (is_array($msg)){
fwrite($fp,date("Y-m-d H:i:s")."\r\n".var_export($msg,true)."\r\n");//写入文件
}else{
fwrite($fp,date("Y-m-d H:i:s").var_export($msg,true)."\r\n");//写入文件
}
}
//自己命令文件,如果不命名就是以日期为名称
if (!empty($filename)){
//设置路径目录信息
$url1 = '/.log/'.$filename.'.log';
$dir_name1=dirname($url1);
//目录不存在就创建
if(!file_exists($dir_name1))
{
//iconv防止中文名乱码
$res = mkdir(iconv("UTF-8", "GBK", $dir_name1),0777,true);
}
$fp1 = fopen($url1,"a");//打开文件资源通道 不存在则自动创建
if ($br == 1){
fwrite($fp1,date("Y-m-d H:i:s").var_export('----------------------------------------------------------------',true)."\r\n");//写入文件
}
fwrite($fp1,date("Y-m-d H:i:s").var_export($msg,true)."\r\n");//写入文件
fclose($fp1);//关闭资源通道
}
fclose($fp);//关闭资源通道
}
}