php日志存储,thinkphp日志记录文件被存在了什么地方
一、php 数据库操作日志记录
//先创建一个log表,有id, action, username, query, time等字段,如果需要记录更多,可添加
$query_string=$_SERVER['QUERY_STRING'];//查询(query)的字符串,这个最好处理一下
$action=$_REQUEST['action'];//操作类型,可以自己定义。比如?action=add&id=xx
//$username就是当前操作人的名字了,登录后都有的吧
if(in_array($action, array('add','edit','delete','update')))
{
addlog($action,$username,$query_string);
}
function addlog($action,$username,$query_string)
{
//这里可以把时间和$query_string处理一下,插入数据库
$db->query($sql);
}
大致思路就是这样的了,细节还需你自己完善
二、thinkphp日志记录文件被存在了什么地方
日志记录\ThinkPHP\Lib\Think\Core\Log.class.php
1、可以在config.php中进行设置,默认为关闭状态。'APP_DEBUG'=> true
打开\ThinkPHP\Common\debug.php文件可以查看debug的默认设置如下:
return array(
'LOG_RECORD'=>true,//进行日志记录
'LOG_RECORD_LEVEL'=> array('EMERG','ALERT','CRIT','ERR','WARN','NOTIC','INFO','DEBUG','SQL'),//允许记录的日志级别
'DB_FIELDS_CACHE'=> false,//数据库字段缓存
'SHOW_RUN_TIME'=>true,//运行时间显示
'SHOW_ADV_TIME'=>true,//显示详细的运行时间
'SHOW_DB_TIMES'=>true,//显示数据库查询和写入次数
'SHOW_CACHE_TIMES'=>true,//显示缓存操作次数
'SHOW_USE_MEM'=>true,//显示内存开销
'SHOW_PAGE_TRACE'=>true,//显示页面Trace信息由Trace文件定义和Action操作赋值
'APP_FILE_CASE'=> true,//是否检查文件的大小写对Windows平台有效
);
注意事项:DB_FIELDS_CACHE数据库字段缓存默认关闭状态,如果开启的话,会在Runtime\Data文件夹下生成文件缓存,并且修改表之后,如新加了字段,这个缓存无法记录你的操作,需要我们手动删除一次,对表的修改才会成功。
将'APP_DEBUG'=> true后,访问页面会出现如下图的DEBUG提示:
如果只想显示一部分提示信息,如运行时间,内存开销等,
可以在config.php中进行相应的设置即可,如:
//'APP_DEBUG'=> true,//调试模式开关
'SHOW_RUN_TIME'=> true,//运行时间显示
'SHOW_ADV_TIME'=> true,//显示详细的运行时间
'SHOW_DB_TIMES'=> true,//显示数据库的操作次数
'SHOW_CACHE_TIMES'=>true,//显示缓存操作次数
'SHOW_USE_MEM'=> true,//显示内存开销
提示信息如下图:
2、页面Trace信息的自定义:\ThinkPHP\Tpl\PageTrace.tpl.php
自定义的方法一:在config.php的同级目录加上一个trace.php文件
<?php
return array{
'当前的server信息'=>$_SERVER['REMOTE_ADDR'],
};
?>
自定义的方法二:在Action方法中添加
$this->trace('我很丑,但是我很温柔','5211314');
3、输出调试法:
halt('aaaaaaa');//输出aaaaaa并且中断程序执行
4、模型调试:显示SQL语句
$User=new Model('User');
$User->find(1);
echo$User->getLastSql();//输出最后执行的一条SQL语句
5、日志记录\ThinkPHP\Lib\Think\Core\Log.class.php
config.php中设置
'LOG_RECORD'=>true,//开启了日志记录
'LOG_RECORD_LEVEL'=>array('EMERG','ALERT'
三、php怎么增加log日志来
1、使用指定的文件记录错误报告日志
使用指定的文件记录错误报告日志使用指定的文件记录错误报告日志使用指定的文件记录错误报告日志如果使用自己指定的文件记录错误日志,一定要确保将这个文件存放在文档根目录之外,以减少遭到攻击的可能。并且该文件一定要让PHP脚本的执行用户(Web服务器进程所有者)具有写权限。假设在Linux操作系统中,将/usr/local/目录下的error.log文件作为错误日志文件,并设置Web服务器进程用户具有写的权限。然后在PHP的配置文件中,将error_log指令的值设置为这个错误日志文件的绝对路径。
需要将php.ini中的配置指令做如下修改:
1. error_reporting= E_ALL;将会向PHP报告发生的每个错误
2. display_errors= Off;不显示满足上条指令所定义规则的所有错误报告
3. log_errors= On;决定日志语句记录的位置
4. log_errors_max_len= 1024;设置每个日志项的最大长度
5. error_log= E:/php_log/php_error.log;指定产生的错误报告写入的日志文件位置
PHP的配置文件按上面的方式设置完成以后,并重新启动Web服务器。这样,在执行PHP的任何脚本文件时,所产生的所有错误报告都不会在浏览器中显示,而会记录在自己指定的错误日志/usr/local/error.log中。此外,不仅可以记录满足error_reporting所定义规则的所有错误,而且还可以使用PHP中的error_log()函数,送出一个用户自定义的错误信息。
四、php怎么记录访问者ip并生成日志
php获取访问者IP地址汇总
在很我的时候我们需要得到用户的真实IP地址,例如,日志记录,
地理定位
,将用户信息,
网站数据分析
等,其实获取IP地址很简单$_SERVER[\'REMOTE_ADDR\']就可以了。下面我们就来给大家汇总一下常用的几种获取IP地址的方法。
//方法1:
$ip
=
$_SERVER["REMOTE_ADDR"];
echo
$ip;
//方法2:
代码如下:
$user_IP
=
($_SERVER["HTTP_VIA"])
?
$_SERVER["HTTP_X_FORWARDED_FOR"]
:
$_SERVER["REMOTE_ADDR"];
$user_IP
=
($user_IP)
?
$user_IP
:
$_SERVER["REMOTE_ADDR"];
echo
$user_IP;
//方法3:
function
getRealIp()
{
$ip=false;
if(!empty($_SERVER["HTTP_CLIENT_IP"])){
$ip
=
$_SERVER["HTTP_CLIENT_IP"];
}
if
(!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
{
$ips
=
explode
(",
",
$_SERVER['HTTP_X_FORWARDED_FOR']);
if
($ip)
{
array_unshift
($ips,
$ip);
$ip
=
FALSE;
}
for
($i
=
0;
$i
<
count($ips);
$i++)
{
if
(!eregi
("^(10│172.16│192.168).",
$ips[$i]))
{
$ip
=
$ips[$i];
break;
}
}
}
return
($ip
?
$ip
:
$_SERVER['REMOTE_ADDR']);
}
echo
getRealIp();
//方法4:
if
($HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"])
{
$ip
=
$HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"];
}
elseif
($HTTP_SERVER_VARS["HTTP_CLIENT_IP"])
{
$ip
=
$HTTP_SERVER_VARS["HTTP_CLIENT_IP"];
}
elseif
($HTTP_SERVER_VARS["REMOTE_ADDR"])
{
$ip
=
$HTTP_SERVER_VARS["REMOTE_ADDR"];
}
elseif
(getenv("HTTP_X_FORWARDED_FOR"))
{
$ip
=
getenv("HTTP_X_FORWARDED_FOR");
}
elseif
(getenv("HTTP_CLIENT_IP"))
{
$ip
=
getenv("HTTP_CLIENT_IP");
}
elseif
(getenv("REMOTE_ADDR"))
{
$ip
=
getenv("REMOTE_ADDR");
}
else
{
$ip
=
"Unknown";
}
echo
$ip
;
//方法5:
if(getenv('HTTP_CLIENT_IP'))
{
$onlineip
=
getenv('HTTP_CLIENT_IP');
}
elseif(getenv('HTTP_X_FORWARDED_FOR'))
{
$onlineip
=
getenv('HTTP_X_FORWARDED_FOR');
}
elseif(getenv('REMOTE_ADDR'))
{
$onlineip
=
getenv('REMOTE_ADDR');
}
else
{
$onlineip
=
$HTTP_SERVER_VARS['REMOTE_ADDR'];
}
echo
$onlineip;
//方法6:
"您的IP地址是:";
if(!empty($_SERVER["HTTP_CLIENT_IP"])){
$cip
=
$_SERVER["HTTP_CLIENT_IP"];
}
elseif(!empty($_SERVER["HTTP_X_FORWARDED_FOR"])){
$cip
=
$_SERVER["HTTP_X_FORWARDED_FOR"];
}
elseif(!empty($_SERVER["REMOTE_ADDR"])){
$cip
=
$_SERVER["REMOTE_ADDR"];
}
else{
$cip
=
"无法获取!";
}
$cip;
保存TEXT中
?php
$ip
=
$_SERVER['REMOTE_ADDR'];
$time
=
gmdate("H:i:s",time()+8*3600);
$file
=
"123.txt"
;
$fp=fopen
("123.txt","a")
;
$txt=
"$ip"."----"."$time"."\n";
fputs($fp,$txt);
?