log4php

下载log4php 地址:http://logging.apache.org/log4php/

参考网址:https://www.cnblogs.com/sdgf/p/5748716.html

apache官网下载之后,解压得到的文件夹目录,对于需要的LOG4PHP的主要核心代码 在src/main/php下面,将其拿出来。放在你需要的文件目录下。

  1. 刚刚开始,用的是.xml配置文件,后来为了可以自由生成日志文件。改成.php配置文件。配置文件普遍和Logger.php文件同级。

.xml配置文件:log4Config.xml

<configuration xmlns = "http://logging.apache.org/log4php/" > 
		    <appender name="route_file_appender" class="LoggerAppenderDailyFile"> 
		    	<!-- 使用appender类LoggerAppenderDailyFile创建一个名为route_file_appender的 appender ,用于记录到文件。 -->
		        <layout class="LoggerLayoutPattern">
		            <param name="conversionPattern" value="%p^^%d{Y-m-d H:i:s}^^%X{UNIQID}^^%X{IP}^^%X{REQUEST_URL}^^%X{USERID}^^%X{REQUEST_PARAM}^^%X{OPERATION}^^%X{OBJECT}^^%X{OLD_VALUE}^^%X{NEW_VALUE}^^%X{DESCRIPTION}^^%X{RESULT}^^%m^^%n" />
		        </layout>
		        <param name="file" value="route.%s.log" />
		        <!-- 设置file参数,告诉appender写入哪个文件。 -->
		        <param name="threshold" value="info"/>
		        <param name="append" value="true" />
		        <param name="datePattern" value="Y-m-d" />
		    </appender>
		    <logger name="Route">
		        <level value="info" />
		        <!-- 将记录器级别设置为WARN。这意味着根记录器不会记录级别低于WARN的日志记录请求。 -->
		        <appender_ref ref="route_file_appender" />
		        <!-- 将myAppender链接到根记录器,以便根记录器收到的所有事件都将转发到myAppender并写入日志文件。 -->
		    </logger> 
		</configuration>

.php配置文件:phpConfig.php

<?php 
			return array (
				'appenders' => 
				array (
					'route_file_appender' => 
					array (
						'class' => 'LoggerAppenderDailyFile',
						'layout' => 
						array (
							'class' => 'LoggerLayoutPattern',
							'params' => 
							array (
								'conversionPattern' => '%p^^%d{Y-m-d H:i:s}^^%X{UNIQID}^^%X{IP}^^%X{REQUEST_URL}^^%X{USERID}^^%X{REQUEST_PARAM}^^%X{OPERATION}^^%X{OBJECT}^^%X{OLD_VALUE}^^%X{NEW_VALUE}^^%X{DESCRIPTION}^^%X{RESULT}^^%m%n',
							),
						),
						'params' => 
						array (
							'file' => 'route.%s.log',
							'threshold' => 'info',
							'append' => 'true',
							'datePattern' => 'Y-m-d',
						),
					),
				),
				'loggers' => 
				array (
					'Route' => 
					array (
						'level' => 'info',
						'appenders' => 
						array (
							0 => 'route_file_appender',
						),
					),
				),
				'renderers' => 
				array (
				),
			);
		?>

在core文件夹下写一个运行代码:logfour.php

<?php
		/**
		 * @authors zoe
		 * @date    2018-09-25
		 * @version 1.0.0
		 */
		$set_current_path = str_replace('\\', '/', dirname(__DIR__));
		require_once($set_current_path . '/include/log4php/Logger.php');
		require_once($set_current_path . '/include/log4php/LoggerMDC.php');
		class AutoLog4 {
		    public static $path = null;
		    public $php_logger_config = null;
		    public static $objself = null;
		    public function __construct(){
		        self::$path = str_replace('\\', '/', dirname(__DIR__));
		    }
		    /**
		     * 单例
		     */
		    public static function getInstance(){
		        if( !(self::$objself instanceof self) ){
		            self::$objself = new self;
		        }
		        return self::$objself;
		    }
		    public function putlog(
		                        $UID_NAME, //操作人
		                        $REQUEST_PARAM = null, //参数
		                        $OPERATION = null, //retrieve create delete update
		                        $OBJECT = null, // php名字+act
		                        $OLD_VALUE = null, //旧值
		                        $NEW_VALUE = null, //新值
		                        $DESCRIPTION = null, //自定义
		                        $RESULT = null, //结果:成功失败
		                        $m = 'php') {
		        $this->php_logger_config = require(self::$path . '/include/log4php/phpConfig.php');
		        $log_file = self::$path . '/data/autolog4/' . $this->php_logger_config['appenders']['route_file_appender']['params']['file'];
		        $this->php_logger_config['appenders']['route_file_appender']['params']['file'] = $log_file;
		        LoggerMDC::clear();
		        LoggerMDC::put('UNIQID',md5(uniqid()));
		        LoggerMDC::put('IP',$_SERVER['REMOTE_ADDR']);
		        LoggerMDC::put('REQUEST_URL',$_SERVER['REQUEST_SCHEME'].'://'.$_SERVER['SERVER_ADMIN'].'/');

		        LoggerMDC::put('USERID',$UID_NAME);
		        LoggerMDC::put('REQUEST_PARAM', $REQUEST_PARAM);
		        LoggerMDC::put('OPERATION', $OPERATION);
		        LoggerMDC::put('OBJECT', $OBJECT);
		        LoggerMDC::put('OLD_VALUE' ,$OLD_VALUE);
		        LoggerMDC::put('NEW_VALUE' ,$NEW_VALUE);
		        LoggerMDC::put('DESCRIPTION' ,$DESCRIPTION);
		        LoggerMDC::put('RESULT',$RESULT);

		        $is_initialized = Logger::getInitializedValue();
		        $is_initialized !== true && Logger::configure($this->php_logger_config);
		        $mdebug = $m.' 这是一个debug的elk!';
		        $minfo = $m.' 这是一个info的elk!';
		        $mwarn = $m.' 这是一个warn的elk!';
		        $merror = $m.' 这是一个的error的elk!';
		        Logger::getLogger('Route')->debug($mdebug);
		        Logger::getLogger('Route')->info($minfo);
		        Logger::getLogger('Route')->warn($mwarn);
		        Logger::getLogger('Route')->error($merror);
		    }
		}
?>

其中因为class类是私有的,用了单例设计模式,并在原有的logger.php多写了一个可以调用的共有的方法来调用其中的初始化,即:

public static function getInitializedValue(){
			return self::isInitialized();
		}

然后,在一个.php文件中引用他们;

	<?php
		// elk 日志对象
		require_once(ST_ROOT_PATH.'core/logfour.php');
		$elkInfo = AutoLog4::getInstance();
		$UID_NAME = $_SESSION['admin_name'];
		$OBJECT = $_SERVER['REQUEST_SCHEME'].'://'.$_SERVER['SERVER_ADMIN'].$_SERVER['REQUEST_URI'];
		// elk-common
		$OPERATION = 'create';
		$OLD_VALUE = null;
		//elk-start
		$NEW_VALUE = $REQUEST_PARAM = json_encode(array('sync_stu'=>$syncsqlarr));
		$DESCRIPTION = '添加学生--向sync_stu插入数据--'.$return_msg;
		$RESULT = 'false';
		$elkInfo->putlog($UID_NAME,$REQUEST_PARAM,$OPERATION,$OBJECT,$OLD_VALUE,$NEW_VALUE,$DESCRIPTION,$RESULT);
		//elk-end
	?>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值