apache 日志:customlog配置的piped log program \'/log.sh\' failed unexpectedly错误->解决
来源:互联网 发布:php 反射机制 编辑:程序博客网 时间:2024/06/08 03:00
如果想自己处理apache日志,有一个方法就是把日志重定向到自己写的程序上,如php或是其它脚本类.
在conf配置文件中使用customlog命令即可;
使用|即可使用管道命令.
CustomLog "|/var/www/log.sh" common
但是我在定向到一个bash 脚本时,它的error.log日志总是提示标题上的错误.
经过测试发现它已经成功调用sh了,但是不明白什么原因,
发现它运行sh时是使用
/bin/sh -c /var/www/log.sh ddd形式运行的,且使用了root权限运行.所以不会是因为权限不足问题.
经过测试是必须消耗掉管道输入stdin的内容.
如sh可以这样用
while read line # 消耗stdin
do
echo "$line"
if [ "$loop" -gt 999999 ];then
exit 0;
fi
let "loop +=1"
`echo "line $line " >> /var/log/apache2/log.log`
done
就不会提示出错,但是还是没办法获取到日志内容.
有人说这个必须使用守护进程才行.
经过测试并非如此,只要消耗stdin即可(看一眼c实现代码没看完没搞明白它是怎么判断这个的)
整个简单的sh可以这样写
----------------sh 代码----------
#! /bin/sh
loop=0
while read line
do
if [ "$loop" -gt 999999 ];then # if deal loop exit
exit 0;
else
loop=$loop+1
fi
`echo $line >> /var/log/apache2/log.log`
done
echo "sh runing" #start apache will see this echo
exit 0
------------代码结束----------
另一个需要注意的地方是:如果测试无效可以暂时换回文件路径方式记录而非管道,看看 是不是普通方式也没日志输出,如果是就是说明暂时管道脚本并没有问题.然后发现这个命令放到virtualhost标签中才有输出,前面测试我一直放在全局apache,且发现切换到普通文件方式也没有任何东西时,再看一下access.log也是用到customlog命令,一般到管理方式时即可看到访问记录往这个sh中灌了.
#CustomLog /var/log/apache2/access.log combined
CustomLog "|/var/www/log.sh" combined
.........
</VirtualHost>
然后这个脚本会在结束后,apache会再次调用的.
- apache 日志:customlog配置的piped log program \'/log.sh\' failed unexpectedly错误->解决
- 解决Apache日志文件ACCESS.LOG太大的方法
- Apache && Nginx Log的配置
- Apache log 日志分析
- 关于apache使用CustomLog 记录日志以及错乱的问题
- Apache服务器的日志(LOG)定制
- 基于apache的日志log管理
- Apache关闭VirtualHost的Log日志记录
- 查看Apache服务器的错误log文件
- log日志配置
- log日志配置简述
- Apache Log配置
- 解决Apache日志文件ACCESS.LOG日益膨胀的一个办法
- 解决Apache日志文件ACCESS.LOG日益膨胀的一个办法
- apache log 设定日志实例
- apache log 设定日志实例
- 关于pptpd log日志文件的配置
- Java log日志的配置方法(MyEclipse10)
- php: return与=区别及参数中$var=\'d\'与$var区别 => 难题已解
- php: 正则中匹配$符号的写法
- ie的新版本js的window.onerror.caller.caller最终总是指向自身导致死环
- ie的innerHTML访问出错,无语的错误
- 数据挖掘之模式挖掘(频繁模式挖掘与Apriori算法)
- apache 日志:customlog配置的piped log program \'/log.sh\' failed unexpectedly错误->解决
- 4.9
- linux:bash脚本管道(|)输入而非参数的获取方式
- linux:用php语法写脚本且获取stdin/stdout的方式,对于不想使用bash语法非常有用
- js:破解/生成验证码基础--2d二维码点生成/处理
- 数据存储之Preferences
- android ListView详解
- 比较强大的字体编辑器FontForge
- window 7 mklink命令比较