GVKun编程网logo

nginx error_log 错误日志配置说明(nginx的错误日志)

18

在这篇文章中,我们将为您详细介绍nginxerror_log错误日志配置说明的内容,并且讨论关于nginx的错误日志的相关问题。此外,我们还会涉及一些关于apacheErrorLog配置的错误日志和P

在这篇文章中,我们将为您详细介绍nginx error_log 错误日志配置说明的内容,并且讨论关于nginx的错误日志的相关问题。此外,我们还会涉及一些关于apache ErrorLog配置的错误日志和PHP的错误日志有区别吗?、apache – 错误日志中同一行上的几条error_log()消息、cups error_log日志暴增、dbms_errlog.create_error_log 记录 DML 错误日志的知识,以帮助您更全面地了解这个主题。

本文目录一览:

nginx error_log 错误日志配置说明(nginx的错误日志)

nginx error_log 错误日志配置说明(nginx的错误日志)

nginx 的 error_log 类型如下(从左到右:debug 最详细 crit 最少):
[ debug | info | notice | warn | error | crit ]
例如:error_log logs/nginx_error.log  crit;
解释:日志文件存储在 nginx 安装目录下的 logs/nginx_error.log ,错误类型为 crit ,也就是记录最少错误信息;

注意 error_log off 并不能关闭日志记录功能,它将日志文件写入一个文件名为 off 的文件中,如果你想关闭错误日志记录功能,应使用以下配置:
error_log /dev/null crit;
把存储位置设置到 Linux 的黑洞中去

同样注意 0.7.53 版本,nginx 在读取配置文件指定的错误日志路径前将使用编译的默认日志位置,如果运行 nginx 的用户对该位置没有写入权限,nginx 将输出如下错误:
[alert]: could not open error log file: open () "/var/log/nginx/error.log" failed (13: Permission denied) log_not_found 语法:log_not_found on | off
默认值:on
使用字段:location
这个参数指定了是否记录客户端的请求出现 404 错误的日志,通常用于不存在的 robots.txt 和 favicon.ico 文件,例如: location = /robots.txt {log_not_found off;}

最后:所有 nginx 配置发生改变时,最好都使用如下命令测试配置是否错误后再使用 -s reload 重载
# /usr/local/nginx/sbin/nginx –t
说明:
1、# 代表 root 权限,不用输入
2、以上是 nginx 的默认安装路径,如果改变了要相应的修改哦,例如 wdcp 的 lanmp 一键安装包 则如需要用如下命令
# /www/wdlinux/nginx/sbin/nginx -s reload
输入后如果提示如下,则表示配置无误:
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
这时再使用重载命令让 Nginx 平滑的重新加载配置即可,而不会影响正常访问:
# /usr/local/nginx/sbin/nginx -s reload

apache ErrorLog配置的错误日志和PHP的错误日志有区别吗?

apache ErrorLog配置的错误日志和PHP的错误日志有区别吗?

apache errorlog配置的错误日志和php的错误日志有区别吗?

回复内容:

apache errorlog配置的错误日志和php的错误日志有区别吗?

一个是记录Apache服务器的错误,一个是记录PHP的错误。
PHP的错误日志会记录一些PHP语法、解析等导致PHP无法正常运行的错误,而Apache的错误日志是记录一些服务器的错误信息,比方某个PHP表达式忘记写分号,这个解析错误是记录PHP的错误日志里的,Apache的日志记录不到这些。

apache – 错误日志中同一行上的几条error_log()消息

apache – 错误日志中同一行上的几条error_log()消息

我有这个PHP代码:

error_log('my message 1');
....
error_log('my message 2');
...
error_log('my message 3');

这会在apache error_log中生成一行包含所有消息:

[Wed Nov 13 17:24:55.880399 2013] [proxy_fcgi:error] [pid xx] [client xxx] AH01071: Got error 'PHP message: my message 1\n'PHP message: my message 2\n'PHP message: my message 3

我的配置:

Apache 2.4
PHP : 5.4
PHP-FPM with proxypassmatch directive.

我的问题:为什么消息在同一行,以及如何为每条消息设置一行?

谢谢你的回答.

编辑

每条消息一行应如下所示:

[Wed Nov 13 17:24:55.880399 2013] [proxy_fcgi:error] [pid xx] [client xxx] AH01071: Got error 'PHP message: my message 1'
[Wed Nov 13 17:24:55.880399 2013] [proxy_fcgi:error] [pid xx] [client xxx] AH01071: Got error 'PHP message: my message 2'
[Wed Nov 13 17:24:55.880399 2013] [proxy_fcgi:error] [pid xx] [client xxx] AH01071: Got error 'PHP message: my message 3'

解决方法:

error_log("error message \r\n");

PHP忽略单引号内的特殊ASCII字符(它将其呈现为单独的字符),您需要使用双引号.

此外:
您应该打开PHP.ini文件,即/ etc / PHP5 / apache2 /文件夹中的文件,然后输入error_log指令指向文件.

Apache必须具有足够的权限才能写入此文件.
所以
chown www-data:www-data /var/www/somefile.log
应该这样做

如果它当前未定义,则日志将通过syslog,并且不允许新行.

附加编辑:
要渗透输出缓冲,您需要引发异常.

例:

try{
  ob_start();
  doSomething($userInput);
  ob_end_flush();
}
catch(Exception $e){
 error_log($e->getMessage());
}

function doSomething($data = null){
  if($data === null){
    throw new Exception("Data is required");
  }
  else{
    //do something
  }

}

cups error_log日志暴增

cups error_log日志暴增

日志内容

  File \"/usr/lib/cups/notifier/dbus\" has insecure permissions 

 

解决(未验证适用范围)

sudo service cups stop
sudo rm /etc/cups/subscriptions.conf*
sudo rm -r /var/cache/cups
sudo service cups start

(如果不能停止cups,执行以下命令):

ps aux | grep cups

获取进程 id (pid) 并杀掉该进程:

kill -9 (获取的进程id)

dbms_errlog.create_error_log 记录 DML 错误日志

dbms_errlog.create_error_log 记录 DML 错误日志

业务场景:

当一个 DML 运行的时候,如果遇到了错误,则这条语句会整个回滚,就好像没有执行过。不过对于一个大的 DML 而言,如果个别数据错误而导致整个语句的回滚,会浪费很多的资源和运行时间,从 10g 开始 Oracle 支持记录 DML 语句的错误,而允许语句自动继续执行。

DBMS_ERRLOG 提供了一个存储过程 CREATE_ERROR_LOG,这个存储过程创建一个错误日志表,当 DML 出错时,操作不会终止和回滚,而是将相关的错误写到错误日志表中。
CREATE_ERROR_LOG 不支持一些数据类型:LONG, CLOB,BLOB, BFILE, and ADT。

简单实例:

1. 创建 test2 表

2. 调用存储过程自动创建相应的错误日志表

begin 
  dbms_errlog.create_error_log(''TEST2'',''LOG_TEST2'');
end;

相应的错误日志表 LOG_TEST2 结构

3. 测试

执行两次一下 sql 语句

insert into test2  values(''1'',''zhangsan'') LOG ERRORS INTO LOG_TEST2 REJECT LIMIT UNLIMITED;

 

然后查看 test2 表和 Log_test2 表

4. 注意事项:

报错信息:

  begin case declare exit for
          goto if loop mod null pragma raise return select update while
          with <an identifier> <a double-quoted delimited-identifier>
          <a bind variable> << close current delete fetch lock insert
          open rollback savepoint set sql execute commit forall merge
          pipe

 

很可能是存储过程中可能出现全角的空格,这种错是不可见的,存储过程只接受半角的空格,这种错误属于比较难查的。比如 $ 符是识别不了的。

 

我们今天的关于nginx error_log 错误日志配置说明nginx的错误日志的分享已经告一段落,感谢您的关注,如果您想了解更多关于apache ErrorLog配置的错误日志和PHP的错误日志有区别吗?、apache – 错误日志中同一行上的几条error_log()消息、cups error_log日志暴增、dbms_errlog.create_error_log 记录 DML 错误日志的相关信息,请在本站查询。

本文标签: