<?php
php
class FileLog {sql
const LOG_FILE_NAME = '%s_log_%s.log';
const SINGLE_LOG_FILE_NAME = '%s_log.log';
const LOG_CONTENT_FORMAT = '%s %s %s';
static $LOG_FILE_PATH = '/home/logs/';
static $flag_file_name = 'default';
public static function init($flag){
self::$flag_file_name = $flag;
$basePath=config("baseConfig.basePath");
self::$LOG_FILE_PATH = $basePath.'/logs/';
}.net
public static function logDt(){
return date('Ymd');
}命令行
public static function logFileName($single=false){
if ($single) {
return sprintf(self::SINGLE_LOG_FILE_NAME,self::$flag_file_name);
} else {
return sprintf(self::LOG_FILE_NAME,self::$flag_file_name,self::logDt());
}
}
/**
* @param $log_type
* @param $contents
* @param bool|true $filter_numeric
* emerg 嚴重錯誤,致使系統崩潰沒法使用
* alert 警惕性錯誤, 必須被當即修改的錯誤
* crit 臨界值錯誤, 超過臨界值的錯誤,例如一天24小時,而輸入的是25小時這樣
* err 通常性錯誤
* warn 警告性錯誤, 須要發出警告的錯誤
* notice 通知,程序能夠運行可是還不夠完美的錯誤
* info 信息,程序輸出信息
* debug 調試,用於調試信息
* sql SQL語句
*/
public static function logs($log_type,$contents,$filter_numeric = true){
$log_string = '';
if(is_array($contents)){
foreach($contents as $key => $value){
if(empty($value)){
$value = '-';
}
if(is_numeric($key) && $filter_numeric){
$log_string .= ' ' . $value;
} else {
$log_string .= ' ' . $key . ' ' . $value;
}
}
} else {
$log_string = $contents;
}debug
/*if($log_string[0] == ' '){
$log_string = substr($log_string,1);
}*/調試
$content_date = date('H:i:s');ip
if(isset($_SERVER['argv'])){ //zyc 修改 用於命令行
$user_agent = '';
}else{
$user_agent = $_SERVER['HTTP_USER_AGENT'];
}get
$x_for_ip = '-';
if(!empty($_SERVER["HTTP_X_FORWARDED_FOR"])){
$x_for_ip = $_SERVER["HTTP_X_FORWARDED_FOR"];
}string
$client_ip = '-';
if(!empty($_SERVER["HTTP_CLIENT_IP"])){
$x_for_ip = $_SERVER["HTTP_CLIENT_IP"];
}it
$ip = '-';
if(!empty($_SERVER["REMOTE_ADDR"])){
$ip = $_SERVER["REMOTE_ADDR"];
}
$log_content = sprintf(self::LOG_CONTENT_FORMAT,$content_date,$log_type,$log_string) . ' ' . $user_agent . ' ' . $x_for_ip . ' ' . $client_ip . ' ' . $ip . PHP_EOL;
$file_name = self::$LOG_FILE_PATH . self::logFileName();
@file_put_contents($file_name,$log_content,FILE_APPEND);
}
public static function SingleLog($log_type,$contents,$filter_numeric = true){
$log_string = '';
if(is_array($contents)){
foreach($contents as $key => $value){
if(empty($value)){
$value = '-';
}
if(is_numeric($key) && $filter_numeric){
$log_string .= ' ' . $value;
} else {
$log_string .= ' ' . $key . ' ' . $value;
}
}
} else {
$log_string = $contents;
}
if($log_string[0] == ' '){
$log_string = substr($log_string,1);
}
$content_date = date('H:i:s');
$user_agent = $_SERVER['HTTP_USER_AGENT'];
$x_for_ip = '-';
if(!empty($_SERVER["HTTP_X_FORWARDED_FOR"])){
$x_for_ip = $_SERVER["HTTP_X_FORWARDED_FOR"];
}
$client_ip = '-';
if(!empty($_SERVER["HTTP_CLIENT_IP"])){
$x_for_ip = $_SERVER["HTTP_CLIENT_IP"];
}
$ip = '-';
if(!empty($_SERVER["REMOTE_ADDR"])){
$ip = $_SERVER["REMOTE_ADDR"];
}
$log_content = sprintf(self::LOG_CONTENT_FORMAT,$content_date,$log_type,$log_string) . ' ' . $user_agent . ' ' . $x_for_ip . ' ' . $client_ip . ' ' . $ip . PHP_EOL;
$file_name = self::$LOG_FILE_PATH . self::logFileName(true);
file_put_contents($file_name,$log_content,FILE_APPEND);
}
}