daemonizer 0.3.8 → 0.3.9

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -10,7 +10,6 @@ begin
10
10
  gemspec.email = "glebpom@gmail.com"
11
11
  gemspec.homepage = "http://github.com/glebpom/daemonizer"
12
12
  gemspec.authors = ["Gleb Pomykalov"]
13
- gemspec.add_dependency('log4r', '>= 1.1.8')
14
13
  gemspec.add_dependency('thor', '>= 0.13.7')
15
14
  end
16
15
  Jeweler::GemcutterTasks.new
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.8
1
+ 0.3.9
data/daemonizer.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{daemonizer}
8
- s.version = "0.3.8"
8
+ s.version = "0.3.9"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Gleb Pomykalov"]
12
- s.date = %q{2010-07-15}
12
+ s.date = %q{2010-07-16}
13
13
  s.default_executable = %q{daemonizer}
14
14
  s.description = %q{Inspired by bundler and rack. Mostly built on top of Alexey Kovyrin's loops code. http://github.com/kovyrin/loops}
15
15
  s.email = %q{glebpom@gmail.com}
@@ -51,14 +51,11 @@ Gem::Specification.new do |s|
51
51
  s.specification_version = 3
52
52
 
53
53
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
54
- s.add_runtime_dependency(%q<log4r>, [">= 1.1.8"])
55
54
  s.add_runtime_dependency(%q<thor>, [">= 0.13.7"])
56
55
  else
57
- s.add_dependency(%q<log4r>, [">= 1.1.8"])
58
56
  s.add_dependency(%q<thor>, [">= 0.13.7"])
59
57
  end
60
58
  else
61
- s.add_dependency(%q<log4r>, [">= 1.1.8"])
62
59
  s.add_dependency(%q<thor>, [">= 0.13.7"])
63
60
  end
64
61
  end
data/lib/daemonizer.rb CHANGED
@@ -2,9 +2,7 @@ require 'rubygems'
2
2
  require 'yaml'
3
3
  require 'erb'
4
4
  require 'pathname'
5
- require 'log4r'
6
-
7
- include Log4r
5
+ require 'logger'
8
6
 
9
7
  module Daemonizer
10
8
 
@@ -33,36 +31,39 @@ module Daemonizer
33
31
  end
34
32
  end
35
33
 
34
+ def self.logger_context=(str)
35
+ @@logger_context = str
36
+ end
37
+
38
+ def self.logger_context
39
+ @@logger_context
40
+ end
41
+
36
42
  def self.init_logger(name, log_file)
37
- @@logger = Logger.new name
38
- outputter = FileOutputter.new('log', :filename => log_file, :trunc => false)
39
- outputter.formatter = PatternFormatter.new :pattern => "%d - %l %g - %m"
40
- @@logger.outputters = outputter
41
- @@logger.level = INFO
43
+ @@logger_file = File.open(log_file, File::WRONLY | File::APPEND)
44
+ @@logger = Logger.new(@@logger_file)
45
+ set_logger_common_options
42
46
  end
43
47
 
44
- def self.reopen_log_file
45
- log_file = @@logger.outputters.first.filename
46
- @@logger.outputters.each do |o|
47
- o.flush
48
- o.close
48
+ def self.set_logger_common_options
49
+ @@logger.sev_threshold = Logger::INFO
50
+ @@logger.formatter = Proc.new do |severity, datetime, progname, msg|
51
+ "%s %s -- %s -- %s\n" % [ datetime.strftime("%Y-%m-%d %H:%M:%S"), severity, Daemonizer.logger_context, msg ]
49
52
  end
50
- outputter = FileOutputter.new('forked-log', :filename => log_file, :trunc => false)
51
- outputter.formatter = PatternFormatter.new :pattern => "%d - %l %g - %m"
52
- @@logger.outputters = outputter
53
+ end
54
+
55
+ def self.reopen_log_file
56
+ true #do not need it in append-only mode
53
57
  end
54
58
 
55
59
  def self.flush_logger
56
- @@logger.outputters.each do |o|
57
- o.flush
58
- end
60
+ @@logger_file.flush
59
61
  end
60
62
 
61
63
  def self.init_console_logger(name)
62
- @@logger = Logger.new name
63
- outputter = Outputter.stdout
64
- outputter.formatter = PatternFormatter.new :pattern => "%d - %l %g - %m"
65
- @@logger.outputters = outputter
64
+ @@logger_file = STDOUT
65
+ @@logger = Logger.new(@@logger_file)
66
+ set_logger_common_options
66
67
  end
67
68
 
68
69
  def self.logger
@@ -47,6 +47,22 @@ module Daemonizer
47
47
  raise ConfigError, "start should be set" if @options[:start].nil?
48
48
  raise ConfigError, "start should have block" unless @options[:start].is_a?(Proc)
49
49
  end
50
+
51
+ # file validation
52
+ if File.exist?(self.log_file)
53
+ if !File.file?(self.log_file)
54
+ raise ConfigError, "'#{self.log_file}' is not a regular file"
55
+ elsif !File.writable?(self.log_file)
56
+ raise ConfigError, "'#{self.log_file}' is not writable!"
57
+ end
58
+ else # ensure directory is writable
59
+ dir = File.dirname(self.log_file)
60
+ if not File.writable?(dir)
61
+ raise ConfigError, "'#{dir}' is not writable!"
62
+ end
63
+ File.open(self.log_file, 'w') { |f| f.write('') } #creating empty file
64
+ end
65
+
50
66
  end
51
67
 
52
68
  [:workers, :poll_period, :root, :cow_friendly].each do |method|
@@ -4,7 +4,7 @@ module Daemonizer
4
4
 
5
5
  def initialize(config, debug = false)
6
6
  @config = config
7
- GDC.set "#{Process.pid}/monitor"
7
+ Daemonizer.logger_context = "#{Process.pid}/monitor"
8
8
  end
9
9
 
10
10
  def start!
@@ -29,7 +29,7 @@ module Daemonizer
29
29
 
30
30
  @pid = Process.pid
31
31
  Daemonizer.reopen_log_file
32
- GDC.set "#{@pid}/#{@worker_id}"
32
+ Daemonizer.logger_context = "#{@pid}/#{@worker_id}"
33
33
 
34
34
  Daemonizer.logger.info "Log file reopened after fork"
35
35
  normal_exit = false
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: daemonizer
3
3
  version: !ruby/object:Gem::Version
4
- hash: 3
4
+ hash: 1
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 3
9
- - 8
10
- version: 0.3.8
9
+ - 9
10
+ version: 0.3.9
11
11
  platform: ruby
12
12
  authors:
13
13
  - Gleb Pomykalov
@@ -15,29 +15,13 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-07-15 00:00:00 +04:00
18
+ date: 2010-07-16 00:00:00 +04:00
19
19
  default_executable: daemonizer
20
20
  dependencies:
21
- - !ruby/object:Gem::Dependency
22
- name: log4r
23
- prerelease: false
24
- requirement: &id001 !ruby/object:Gem::Requirement
25
- none: false
26
- requirements:
27
- - - ">="
28
- - !ruby/object:Gem::Version
29
- hash: 3
30
- segments:
31
- - 1
32
- - 1
33
- - 8
34
- version: 1.1.8
35
- type: :runtime
36
- version_requirements: *id001
37
21
  - !ruby/object:Gem::Dependency
38
22
  name: thor
39
23
  prerelease: false
40
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ requirement: &id001 !ruby/object:Gem::Requirement
41
25
  none: false
42
26
  requirements:
43
27
  - - ">="
@@ -49,7 +33,7 @@ dependencies:
49
33
  - 7
50
34
  version: 0.13.7
51
35
  type: :runtime
52
- version_requirements: *id002
36
+ version_requirements: *id001
53
37
  description: Inspired by bundler and rack. Mostly built on top of Alexey Kovyrin's loops code. http://github.com/kovyrin/loops
54
38
  email: glebpom@gmail.com
55
39
  executables: