2016-01-11 10 views
0

Я использую демон, чтобы обернуть мой сценарий и указали журналы местоположение в том, что: Script выглядит следующим образом:Добавить журналы в другом каталоге с помощью демону рубина

#!/usr/local/bin/ruby 
require 'rubygems' 
require 'daemons' 

Daemons.run_proc(
    'script_test', # name of daemon 
    :log_output => true, 
    :output_logfilename => "script-test.log", 
    :logfilename => "script-test.log" 
) do 
    exec 'ruby /opt/script-test/script-test.rb' 
end 

Проблема мои журналы хранение в том же каталоге где мой скрипт присутствует. Я должен добавить свои журналы в другой каталог, например,/var/log/script-test, а затем повернуть эти журналы еженедельно. Предоставьте мне решение, чтобы я мог хранить журналы сценария в каталоге/var/log.

+0

Может быть, вы можете попробовать некоторые драгоценные камни, как [это - log4net] (https://rubygems.org/gems/log4net/versions/1.2.10) –

ответ

0

Он работал для меня с этой конфигурацией, как:

Daemons.run_proc(
    'script-test', # name of daemon 
    :log_output => true, 
    :dir_mode => :normal, 
    :dir => "/var/log", 
    :output_logfilename => "script-test.log", 
    :logfilename => "script-test.log" 
) do 
    exec 'ruby /opt/script-test/script-test.rb' 

конец

0

Убедитесь, что вы используете абсолютный путь вместо относительного пути

Например:

:output_logfilename => "/var/log/script-test.log", 
:logfilename => "/var/log/script-test.log" 

Чтобы LogRotate журналы, (при условии, Linux) добавить следующие строки в logrotate конфигурации в вращаться на еженедельной основе:

/var/log/script-test.log { 
    weekly 
    missingok 
    compress 
    notifempty 
    copytruncate 
} 
+0

Я изменил это, но не повезло. это не создает никакого файла журнала в каталоге/var/log. Спасибо, что поделился скриптом logrotate. –

+0

В качестве временного теста попробуйте создать файл сначала с помощью 'sudo touch/var/log/script-test.log', а затем' sudo chmod 777/var/log/script-test.log'. –