Articles of 日志

用Django,Nginx,Gunicorn和主pipe清空日志

我在我的生产环境中使用django日志logging有问题。 我使用Nginx + Gunicorn + Supervisorctl来运行我的Django网站。 我已经尝试了几乎所有的两天没有任何结果。 我的想法是有两个日志文件,我在我的Django应用程序中定义。 一个存储所有日志logging(messages.log),另一个存储WARNING,ERROR和CRITICAL日志logging(errors.log) LOGGING = { 'version': 1, 'disable_existing_loggers': True, 'formatters': { 'verbose': { 'format': ' [%(asctime)s] [%(levelname)s] [%(name)s] %(message)s' }, 'simple': { 'format': ' %(levelname)s %(message)s' }, }, 'handlers': { 'console': { 'level': 'DEBUG', 'class': 'logging.StreamHandler', 'formatter': 'verbose' }, 'file': { 'level': 'DEBUG', 'class': 'logging.FileHandler', 'formatter': 'verbose', 'filename': […]

按相反的顺序处理这些行

我如何处理日志文件(在我的情况nginx access.log)以相反的顺序? 背景我正在开发一个日志文件分析器脚本,我只是无法得到我的头如何从最后处理大型日志文件,所以我可以整理出我需要的最新date的时间框架。

Nginx的logrotate不能在亚马逊服务器上工作

我是服务器端的新手。我在我的服务器(Amazon EC2 32位实例)上安装了Nginx来运行我的Ruby on Rails应用程序。我已经为我的nginx logrotate写了下面的configuration。 /var/log/nginx/*.log { daily missingok rotate 12 compress delaycompress notifempty create 0640 www-data adm sharedscripts prerotate if [ -d /etc/logrotate.d/httpd-prerotate ]; then \ run-parts /etc/logrotate.d/httpd-prerotate; \ fi; \ endscript postrotate [ ! -f /var/run/nginx.pid ] || kill -USR1 `cat /var/run/nginx.pid` endscript } 但问题是,尽pipe旋转间隔保持每天..有一个文件(Nginx的访问日志),这是在大约4.5 Gb生成的。我不知道为什么会发生这种情况,任何人都可以告诉我我可以做什么为了避免这个。可以有人请帮我这个。

为什么我的gunicorn进程忽略了Django的日志级别设置?

我有Nginx,Gunicorn和Django都运行在同一个Ubuntu EC2实例上。 我有一个相当传统的设置,并希望将所有gunicorn错误logging到一个特定的文件。 我的Gunicorn的configuration是: #!/bin/bash NAME="server" GUNICORNDIR=/ebs/env/bin DJANGODIR=/ebs/server/ SOCKFILE=/tmp/gunicorn.sock LOGFILE=/var/log/gunicorn/gunicorn.error USER=ubuntu GROUP=ubuntu NUM_WORKERS=5 TIMEOUT=60 DJANGO_SETTINGS_MODULE=settings DJANGO_WSGI_MODULE=wsgi echo "Starting $NAME" RUNDIR=$(dirname $SOCKFILE) test -d $RUNDIR || mkdir -p $RUNDIR exec $GUNICORNDIR/gunicorn ${DJANGO_WSGI_MODULE}:application \ –name $NAME \ –workers $NUM_WORKERS \ –timeout=$TIMEOUT \ –user=$USER –group=$GROUP \ –log-level=error –log-file=$LOGFILE \ –bind=unix:$SOCKFILE 但是,通过这种configuration,我将DEBUG和上面的所有日志写入文件。 我的日志级别参数似乎被忽略。 我正在寻找的是只有这些types的日志消息写入: 2014-01-02 13:54:53 [3327] [CRITICAL] WORKER […]

nginx在哪里存储rewrite_log?

当你用rewrite_log on;打开nginx重写日志rewrite_log on; 系统在哪里logging这些信息? 它似乎没有在文档中,并通过谷歌一个体面的search没有变成什么。 我也尝试启用并查看访问和错误日​​志。 没有运气。

如何在不重新启动守护进程的情况下读取和截断snmptrapd日志文件

我做了一个执行nagios检查的python脚本。 该脚本的function非常简单,它只是parsing一个日志,并匹配一些信息女巫用于构buildnagios检查输出。 该日志是一个snmptrapd日志logging从其他服务器的陷阱,并logging在/var/log/snmptrapd巫婆后,我只是parsing他们的脚本。 为了有最新的陷阱我每次读取后从Python删除日志。 为了保存信息,我做了一个cron作业,将日志的内容复制到另一个日志,时间间隔比nagios检查间隔小一点。 我不明白的是为什么日志增长这么多(我的意思是消息日志,我猜测1000倍以上的信息更小)。 从我在日志中看到的有很多像^@这样的特殊字符,我认为这是通过我从pyton操作文件的方式完成的,但是看到我已经有三个星期的经验我似乎无法弄清楚这个问题。 脚本代码如下: import sys, os, re validstring = "OK" filename = "/var/log/snmptrapd.log" if os.stat(filename)[6] == 0: print validstring sys.exit() else: f = open(filename,"r") sharestring = "" line1 = [] patte0 = re.compile("[0-9]+-[0-9]+-[0-9]+") patte2 = re.compile("NG: [a-zA-Z\s=0-9]+.*") for line in f: line1 = line.split(" ") if re.search(patte0,line1[0]): sharestring = sharestring […]

Log4perlconfiguration不起作用

我在我的Linux机器上安装了Log4perl,并具有以下/path/to/log4perl.conf : log4perl.logger.Fizz = INFO, FizzAppender log4perl.logger.Buzz = INFO, BuzzAppender log4perl.appender.FizzAppender = Log::Dispatch::FileRotate log4perl.appender.FizzAppender.filename = /my/logs/fizz-log.txt log4perl.appender.FizzAppender.max = 1 log4perl.appender.FizzAppender.DatePattern = yyyy-MM-dd log4perl.appender.FizzAppender.TZ = EST log4perl.appender.FizzAppender.layout = Log::Log4perl::Layout::PatternLayout log4perl.appender.FizzAppender.layout.ConversionPattern = %d %m %n log4perl.appender.BuzzAppender = Log::Dispatch::FileRotate log4perl.appender.BuzzAppender.filename = /my/logs/buzz-log.txt log4perl.appender.BuzzAppender.max = 1 log4perl.appender.BuzzAppender.DatePattern = yyyy-MM-dd log4perl.appender.BuzzAppender.TZ = EST log4perl.appender.BuzzAppender.layout = Log::Log4perl::Layout::PatternLayout log4perl.appender.BuzzAppender.layout.ConversionPattern = %d %m […]

当rsyslogd守护进程停止时,系统日志消息会发生什么变化?

我试图在很多地方search这个,还有openlog(),syslog(0,rsyslogd(8))的文档/手册页,但是找不到答案。 我的问题是,如果rsyslogd停止或尚未开始,那么新的系统日志消息会丢失? 或者rsyslogd稍后在启用时从/ dev / log中获取它们? 我的testing是: 在运行的系统上,rsyslog正在运行。 现在,执行以下操作: logger -p local7.notice“my custom message1” grep message1 | / var / log / messages —->成功 停止rsyslogd进程 logger -p local7.notice“我的其他自定义消息2” 现在,启动rsyslogd守护进程 grep message2 | / var / log / messages —-> FAIL 我从openlog(3)和syslog(3)手册页了解到为/ dev / log文件打开一个套接字,如果在将消息发送到syslog时发生错误(因为rsyslogd没有运行),那么连接就会closures并且如果您使用了LOG_CONS / LOG_PERROR,则消息将打印在控制台/ stderror上)。 有谁可以告诉我: 有没有什么办法rsyslogd得到所有这些消息来到没有它在系统日志文件时出现? 如果没有默认,是否有任何系统调用,命令等等。 先谢谢你。 -Neo

如何添加一个时间戳记bash脚本日志每个命令和排除集,回声,日志?

如何添加一个时间戳记到每个命令的bash脚本日志(排除设置,回声,日志)? 我运行一个备份脚本,并希望logging所有命令与时间戳: #./svnbackup.sh 2&>1 | timestamp_xtrace > ./svn-backup.log 2>&1 这是我的function,它不工作: timestamp_xtrace() { while IFS= read -r line; do if [[ "$line" =~ "^+ set" ]] && [[ "$line" =~ "^+ echo" ]] && [[ "$line" =~ "^+ log" ]]; then echo "$(date) $line"; fi done } 我想排除一些命令(设置,回声,日志…),但它不工作..有人有一个提示,以解决我的问题?

写日志文件与运行服务的date

我用reactphp创build了一个服务,运行并执行一些操作。 它作为一个守护进程启动,所以所有的输出都应该logging在一个文件中。 这个日志文件应该被命名为“foo-log-file – $(date”+ F“)” 。 我想每天都有一个日志文件。 问题: 如上所述,脚本作为服务运行,而不是停止。 因此脚本的开始调用只能进行一次。 php my_script.php >> /var/log/bar/log-file–$(date "+%F") 2>&1 所以从这个脚本打印到控制台的所有内容都被保存到文件中,但是文件只有在被调用时才使用datestring创build,并且不会被更新为新date。 题: 有没有可能解决这个问题,而不写在PHP脚本的日志逻辑? 我可以用bash来处理这个需求吗?