daemonizer 0.3.8 → 0.3.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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: