Загрузка журнала из AppEngine, включая отчеты Python Log - PullRequest
18 голосов
/ 09 февраля 2010

Я знаю, что вы можете загрузить необработанные журналы доступа с помощью appcfg.py, но мне действительно интересна вся информация, относящаяся к конкретному запросу, например операторы журналирования Python, исключения и статистика API (точно так же, как онлайн-средство просмотра журналов). Кто-нибудь знает, есть ли способ получить эту информацию другим способом, чем создавать ее самостоятельно?

Если кому-то интересно, мы хотим провести непрерывный статистический анализ проблем и вывести их на большой экран на стене в офисе.

Ответы [ 4 ]

21 голосов
/ 09 февраля 2010

Конечно - просто передайте флаг --severity в appcfg.py:

$ appcfg.py help request_logs
Usage: appcfg.py [options] request_logs <directory> <output_file>

Write request logs in Apache common log format.

The 'request_logs' command exports the request logs from your application
to a file.  It will write Apache common log format records ordered
chronologically.  If output file is '-' stdout will be written.

Options:
  -h, --help            Show the help message and exit.
  -q, --quiet           Print errors only.
  -v, --verbose         Print info level logs.
  --noisy               Print all logs.
  -s SERVER, --server=SERVER
                        The server to connect to.
  --insecure            Use HTTP when communicating with the server.
  -e EMAIL, --email=EMAIL
                        The username to use. Will prompt if omitted.
  -H HOST, --host=HOST  Overrides the Host header sent with all RPCs.
  --no_cookies          Do not save authentication cookies to local disk.
  --passin              Read the login password from stdin.
  -A APP_ID, --application=APP_ID
                        Override application from app.yaml file.
  -V VERSION, --version=VERSION
                        Override (major) version from app.yaml file.
  -n NUM_DAYS, --num_days=NUM_DAYS
                        Number of days worth of log data to get. The cut-off
                        point is midnight UTC. Use 0 to get all available
                        logs. Default is 1, unless --append is also given;
                        then the default is 0.
  -a, --append          Append to existing file.
  --severity=SEVERITY   Severity of app-level log messages to get. The range
                        is 0 (DEBUG) through 4 (CRITICAL). If omitted, only
                        request logs are returned.
  --vhost=VHOST         The virtual host of log messages to get. If omitted,
                        all log messages are returned.
  --include_vhost       Include virtual host in log messages.
  --end_date=END_DATE   End date (as YYYY-MM-DD) of period for log data.
                        Defaults to today.
15 голосов
/ 23 июня 2012

Вот что у нас действительно хорошо работает:

appcfg.py --append --num_days=0 --include_all request_logs /path/to/your/app/ /var/log/gae/yourapp.log

В любом случае, строка выше получит все ваши записи журнала и добавит их в файл журнала, если вы выполнили это раньше, если нет, то создаст новый файл журнала. На самом деле он просматривает ваш существующий журнал (если он там есть) и не получит никаких дубликатов. Вы можете запустить это без --append, если хотите, но используйте его, если вы автоматизируете загрузку журналов.

Ключ здесь - флаг --include_all, который кажется недокументированным. Этот флаг будет получать все данные, которые вы видите, если вы используете средство просмотра веб-журнала GAE. Таким образом, вы получите такие поля, как: ms = 71 cpu_ms = 32 api_cpu_ms = 12 cpm_usd = 0,000921 ... и т. Д.

ОК, надеюсь, это кому-нибудь поможет.

Кстати, мы написали в блоге об этом, ознакомьтесь с здесь .

3 голосов
/ 30 августа 2013

Кажется, я работаю в пределе 100M с appcfg. Я закончил тем, что использовал logservice API для получения логов

Вот код - https://github.com/manasg/gae-log-fetcher

0 голосов
/ 05 апреля 2014

Вот способ получить доступ к необработанным журналам, чтобы вы могли продолжить обработку без специального анализа (также для меня request_logs не загружает все данные за указанный период времени).

Вот приложение, которое работает в самом appengine: https://gaelogapp.appspot.com/

Вы можете легко добавить эту функцию в свое приложение, обновив app.yaml и скопировав logs.py: https://github.com/okigan/gaelogapp

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...