Browse Source

Added ee log command, fixes #429 #406

bugfixes
gau1991 10 years ago
parent
commit
2b9040f544
  1. 8
      config/plugins.d/log.conf
  2. 23
      ee/cli/plugins/debug.py
  3. 72
      ee/cli/plugins/log.py

8
config/plugins.d/log.conf

@ -0,0 +1,8 @@
### Example Plugin Configuration for EasyEngine
[log]
### If enabled, load a plugin named `example` either from the Python module
### `ee.cli.plugins.example` or from the file path
### `/var/lib/ee/plugins/example.py`
enable_plugin = true

23
ee/cli/plugins/debug.py

@ -12,6 +12,7 @@ import os
import configparser import configparser
import glob import glob
import signal import signal
import subprocess
def debug_plugin_hook(app): def debug_plugin_hook(app):
@ -160,7 +161,7 @@ class EEDebugController(CementBaseController):
# PHP global debug stop # PHP global debug stop
else: else:
if EEShellExec.cmd_exec(self, "sed -n \"/upstream php {/,/}/p\" " if EEShellExec.cmd_exec(self, " sed -n \"/upstream php {/,/}/p\" "
"/etc/nginx/conf.d/upstream.conf " "/etc/nginx/conf.d/upstream.conf "
"| grep 9001"): "| grep 9001"):
Log.info(self, "Disabling PHP debug") Log.info(self, "Disabling PHP debug")
@ -241,13 +242,16 @@ class EEDebugController(CementBaseController):
cron_time = int(self.app.pargs.interval) cron_time = int(self.app.pargs.interval)
except Exception as e: except Exception as e:
cron_time = 5 cron_time = 5
EEShellExec.cmd_exec(self, "/bin/bash -c \"crontab -l 2> "
"/dev/null | {{ cat; echo -e" EEShellExec.cmd_exec(self, "/bin/bash -c \"crontab -l "
" \\\"#EasyEngine start MySQL slow" "2> /dev/null | {{ cat; echo -e"
" log \\n*/{0} * * * * " " \\\"#EasyEngine start MySQL "
"/usr/local/sbin/ee import-slow-log\\" "slow log \\n*/{0} * * * * "
"n#EasyEngine end MySQL slow log\\\";" "/usr/local/bin/ee "
" }} | crontab -\"".format(cron_time)) "import-slow-log\\n"
"#EasyEngine end MySQL slow log"
"\\\"; }} | crontab -\""
.format(cron_time))
else: else:
Log.info(self, "MySQL slow log is already enabled") Log.info(self, "MySQL slow log is already enabled")
@ -296,7 +300,8 @@ class EEDebugController(CementBaseController):
" {0}".format(wp_config)) " {0}".format(wp_config))
EEShellExec.cmd_exec(self, "cd {0}/htdocs/ && wp" EEShellExec.cmd_exec(self, "cd {0}/htdocs/ && wp"
" plugin --allow-root install " " plugin --allow-root install "
"developer".format(webroot)) "developer query-monitor"
.format(webroot))
EEShellExec.cmd_exec(self, "chown -R {1}: {0}/htdocs/" EEShellExec.cmd_exec(self, "chown -R {1}: {0}/htdocs/"
"wp-content/plugins" "wp-content/plugins"
.format(webroot, .format(webroot,

72
ee/cli/plugins/log.py

@ -0,0 +1,72 @@
"""Debug Plugin for EasyEngine"""
from cement.core.controller import CementBaseController, expose
from cement.core import handler, hook
from ee.core.logging import Log
from ee.cli.plugins.site_functions import logwatch
from ee.core.variables import EEVariables
import os
import glob
def log_plugin_hook(app):
# do something with the ``app`` object here.
pass
class EELogController(CementBaseController):
class Meta:
label = 'log'
description = 'Show Nginx, PHP, MySQL log file'
stacked_on = 'base'
stacked_type = 'nested'
arguments = [
(['--all'],
dict(help='Show All logs file', action='store_true')),
(['--nginx'],
dict(help='Show Nginx logs file', action='store_true')),
(['--php'],
dict(help='Show PHP logs file', action='store_true')),
(['--mysql'],
dict(help='Show MySQL logs file', action='store_true')),
]
@expose(hide=True)
def default(self):
"""Default function of debug"""
self.msg = []
if ((not self.app.pargs.nginx) and (not self.app.pargs.php)
and (not self.app.pargs.mysql)):
self.app.pargs.nginx = True
self.app.pargs.php = True
self.app.pargs.mysql = True
if self.app.pargs.nginx:
self.msg = self.msg + ["/var/log/nginx/*error.log"]
if self.app.pargs.php:
open('/var/log/php5/slow.log', 'a').close()
open('/var/log/php5/fpm.log', 'a').close()
self.msg = self.msg + ['/var/log/php5/slow.log',
'/var/log/php5/fpm.log']
if self.app.pargs.mysql:
# MySQL debug will not work for remote MySQL
if EEVariables.ee_mysql_host is "localhost":
open('/var/log/mysql/mysql-slow.log', 'a').close()
self.msg = self.msg + ['/var/log/mysql/mysql-slow.log']
else:
Log.warn(self, "Remote MySQL found, EasyEngine is not able to"
"show MySQL log file")
watch_list = []
for w_list in self.msg:
watch_list = watch_list + glob.glob(w_list)
logwatch(self, watch_list)
def load(app):
# register the plugin class.. this only happens if the plugin is enabled
handler.register(EELogController)
# register a hook (function) to run after arguments are parsed.
hook.register('post_argument_parsing', log_plugin_hook)
Loading…
Cancel
Save