Назад | Перейти на главную страницу

Apache заполняет журнал ошибок с помощью TransferLog

Я использую Apache 2.4 и несколько виртуальных хостов. Это в Windows, кстати. На каждом виртуальном хосте у меня есть следующие конфигурации файлов журнала:

CustomLog "|bin/rotatelogs.exe -l ${SRVROOT}/logs/dev.ssl_request.%Y.%m.%d.log 86400" \
      "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" env=HTTPS

ErrorLog "|bin/rotatelogs.exe -l ${SRVROOT}/logs/dev.error.%Y.%m.%d.log 86400"
TransferLog "|bin/rotatelogs.exe -l ${SRVROOT}/logs/dev.access.%Y.%m.%d.log 86400"

Это было бы для DEV виртуальный хост. Остальные (test / ua / etc.) В основном такие же, за исключением ServerName, а журналы называются {environment} .error и т. Д.

Теперь, когда я запускаю Apache, файл журнала ошибок снова и снова забивается одним и тем же сообщением. Это сообщение:

Incorrect number of arguments
Usage: C:\Program Files\Apache Software Foundation\Apache24\bin\rotatelogs.exe [-v] [-l] [-L linkname] [-p prog] [-f] [-t] [-e] [-n number] <logfile> {<rotation time in seconds>|<rotation size>(B|K|M|G)} [offset minutes from UTC]

Add this:

TransferLog "|C:\Program Files\Apache Software Foundation\Apache24\bin\rotatelogs.exe /some/where 86400"

or 

TransferLog "|C:\Program Files\Apache Software Foundation\Apache24\bin\rotatelogs.exe /some/where 5M"

to httpd.conf. By default, the generated name will be
<logfile>.nnnn where nnnn is the system time at which the log
nominally starts (N.B. if using a rotation time, the time will
always be a multiple of the rotation time, so you can synchronize
cron scripts with it). If <logfile> contains strftime conversion
specifications, those will be used instead. At the end of each
rotation time or when the file size is reached a new log is
started.

Options:
  -v       Verbose operation. Messages are written to stderr.
  -l       Base rotation on local time instead of UTC.
  -L path  Create hard link from current log to specified path.
  -p prog  Run specified program after opening a new log file. See below.
  -f       Force opening of log on program start.
  -t       Truncate logfile instead of rotating, tail friendly.
  -e       Echo log to stdout for further processing.

The program is invoked as "[prog] <curfile> [<prevfile>]"
where <curfile> is the filename of the newly opened logfile, and
<prevfile>, if given, is the filename of the previously used logfile.

Я не могу понять, почему это происходит. Кроме того, прежде чем я установил Apache на наш веб-сервер, я выполнил ту же настройку локально на своем ноутбуке, и ведение журнала работало без сообщений об ошибках.

Любые идеи?

Спасибо.

ОБНОВИТЬ

Как предложил Джефф Снайдер, я пошел еще дальше и удалил «$ {SRVROOT}» и изменил все на «logs / dev.error ....». Я читал в документации Apache, что если вы не укажете /, то по умолчанию все равно будет SRVROOT.

После того, как я это сделал, я начал видеть всплывающие журналы. И журнал ошибок был стабильным. Но через несколько минут это начало повторяться.

Я даже отключил ВСЕ "TransferLog" в каждой среде, и у меня есть только CustomLog и ErrorLog. То же самое.

Моя текущая конфигурация сейчас:

CustomLog "|bin/rotatelogs.exe -l logs/dev.ssl_request.%Y.%m.%d.log\ 86400" \
      "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" env=HTTPS

ErrorLog "|bin/rotatelogs.exe -l logs/dev.error.%Y.%m.%d.log 86400"

Попробуйте поставить кавычки ${SRVROOT} в ваших командных строках. Я подозреваю, что в нем есть пробелы, и они могут сбить с толку, выглядя как несколько отдельных аргументов.