itslog 0.3.2 → 0.5.0

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/README.md CHANGED
@@ -3,11 +3,15 @@ itslog
3
3
 
4
4
  `itslog` is a log formatter designed to aid rails development.
5
5
 
6
- The formatting will prepend all log statements with a colored header and additional information about the statement.
6
+ The formatting will prepend all log statements with a colored header and additional information about the statement. The information and structure of the new statements is customizable through configuration.
7
7
 
8
8
  [timestamp] [rails namespace] [log message], example:
9
9
 
10
- 15:16:32 action_view Rendered layouts/_head.haml (8.5ms)
10
+ ![](http://cdn.lts.cr/files/bf23b77669a77fb444b6/itslog_example1.jpg)
11
+
12
+ Errors and warnings will also stand out, example:
13
+
14
+ ![](http://cdn.lts.cr/files/bf23b77669a77fb444b6/itslog_example2.jpg)
11
15
 
12
16
  In addition to more readable logs, you can tail and grep specific parts of your application. example:
13
17
 
@@ -20,9 +24,11 @@ Install
20
24
 
21
25
  Add to your Gemfile in Rails:
22
26
 
23
- group :development, :test do
24
- gem 'itslog'
25
- end
27
+ ``` ruby
28
+ group :development, :test do
29
+ gem 'itslog'
30
+ end
31
+ ```
26
32
 
27
33
  Configure
28
34
  -----------
@@ -31,14 +37,17 @@ Itslog does not need to be configured unless you want to customize the output st
31
37
 
32
38
  Example:
33
39
 
34
- Itslog.configure do |config|
35
- config.namespace_colors = {
36
- 'action_controller' => "\e[32m",
37
- 'active_record' => "\e[94m",
38
- 'action_view' => "\e[36m"
39
- }
40
- config.format = "Its log log log || %t [ %n ] %m \n by blamo"
41
- end
40
+ ``` ruby
41
+ Itslog.configure do |config|
42
+ config.namespace_colors = {
43
+ 'action_controller' => "\e[32m",
44
+ 'active_record' => "\e[94m",
45
+ 'mongo' => "\e[94m",
46
+ 'action_view' => "\e[36m"
47
+ }
48
+ config.format = "%t [%n]: %m"
49
+ end
50
+ ```
42
51
 
43
52
  Configure format by building a string anyway you'd like and using the following variables:
44
53
 
@@ -48,11 +57,13 @@ Configure format by building a string anyway you'd like and using the following
48
57
 
49
58
  I don't recommend coloring by severity because it's not very useful. To color by severity instead of the default of namespace:
50
59
 
51
- Itslog.configure do |config|
52
- config.color_by :severity
53
- config.severity_colors = ["\e[36m","\e[32m","\e[33m","\e[31m","\e[31m","\e[37m"]
54
- # debug, info, warning, error, fatal, unknown
55
- end
60
+ ``` ruby
61
+ Itslog.configure do |config|
62
+ config.color_by :severity
63
+ # debug, info, warning, error, fatal, unknown
64
+ config.severity_colors = ["\e[36m","\e[32m","\e[33m","\e[31m","\e[31m","\e[37m"]
65
+ end
66
+ ```
56
67
 
57
68
  Place the configuration in an initializer:
58
69
 
data/Rakefile CHANGED
@@ -1,2 +1,11 @@
1
1
  require 'bundler'
2
+ require 'rake/testtask'
2
3
  Bundler::GemHelper.install_tasks
4
+
5
+ task :default => :test
6
+ Rake::TestTask.new do |t|
7
+ t.libs << 'lib'
8
+ t.ruby_opts << '-rubygems'
9
+ t.pattern = 'test/**/*_test.rb'
10
+ t.verbose = false
11
+ end
@@ -8,13 +8,14 @@ module Itslog
8
8
  end
9
9
 
10
10
  def format
11
- @format ||= '%t %n %m'
11
+ @format ||= '%t %n_%m'
12
12
  end
13
13
 
14
14
  def namespace_colors
15
15
  @namespace_colors ||= {
16
16
  'action_controller' => "\e[32m",
17
17
  'active_record' => "\e[94m",
18
+ 'mongo' => "\e[94m",
18
19
  'action_view' => "\e[36m"}
19
20
  end
20
21
 
@@ -35,5 +36,19 @@ module Itslog
35
36
  def configure
36
37
  yield self
37
38
  end
39
+
40
+ def reset
41
+ configure do |config|
42
+ config.color_by = :namespace
43
+ config.format = '%t %n_%m'
44
+ config.namespace_colors = {
45
+ 'action_controller' => "\e[32m",
46
+ 'active_record' => "\e[94m",
47
+ 'mongo' => "\e[94m",
48
+ 'action_view' => "\e[36m"}
49
+ config.severity_colors = [
50
+ "\e[36m","\e[32m","\e[33m","\e[31m","\e[31m","\e[37m"]
51
+ end
52
+ end
38
53
  end
39
54
  end
@@ -9,17 +9,24 @@ module Itslog
9
9
  end
10
10
 
11
11
  def add_with_format(severity, message = nil, progname = nil, &block)
12
- return if @level > severity
12
+ return if @level > severity || message.nil?
13
13
 
14
14
  time = Time.now.to_s(:db).split.last
15
15
  message = "\e[37m" + message.to_s.strip
16
- msg = ''
16
+ msg = namespace.present? ? '' : "\n"
17
17
  msg << Itslog::Configure.color(namespace, severity)
18
18
  msg << Itslog::Configure.format.dup
19
- {'%t' => time, '%n' => namespace, '%m' => message}.each do |k,v|
20
- msg.gsub! k, v if v.present?
19
+
20
+ { '%t' => time,
21
+ '%n_' => namespace.present? ? namespace + ' ' : namespace,
22
+ '%n' => namespace,
23
+ '%m' => message
24
+ }.each do |k,v|
25
+ msg.gsub! k,v
21
26
  end
22
27
 
28
+ @namespace = ''
29
+
23
30
  add_without_format severity, msg, progname, &block
24
31
  end
25
32
 
@@ -44,3 +51,18 @@ module Itslog
44
51
  end
45
52
  end
46
53
  end
54
+
55
+ if defined? Mongoid::Logger
56
+ class Mongoid::Logger
57
+ delegate :namespace=, :to => :logger, :allow_nil => true
58
+ end
59
+
60
+ class Mongo::Connection
61
+ def log_operation_with_namespace(name, payload)
62
+ @logger.namespace = 'mongo' if @logger
63
+ log_operation_without_namespace(name, payload)
64
+ end
65
+
66
+ alias_method_chain :log_operation, :namespace
67
+ end
68
+ end
@@ -1,7 +1,15 @@
1
- class Railtie < Rails::Railtie
2
- config.before_initialize do
3
- ActiveSupport::BufferedLogger.send(:include, Itslog::BufferedLoggerExtension)
4
- ActiveSupport::LogSubscriber.send(:include, Itslog::LogSubscriberExtension)
5
- ActiveSupport::LogSubscriber.colorize_logging = false
1
+ module Itslog
2
+ class Railtie < Rails::Railtie
3
+ config.before_initialize do
4
+ Itslog::Railtie.insert
5
+ ActiveSupport::LogSubscriber.colorize_logging = false
6
+ end
7
+ end
8
+
9
+ class Railtie
10
+ def self.insert
11
+ ActiveSupport::BufferedLogger.send(:include, Itslog::BufferedLoggerExtension)
12
+ ActiveSupport::LogSubscriber.send(:include, Itslog::LogSubscriberExtension)
13
+ end
6
14
  end
7
15
  end
@@ -1,3 +1,3 @@
1
1
  module Itslog
2
- VERSION = '0.3.2'
2
+ VERSION = '0.5.0'
3
3
  end
@@ -0,0 +1,3 @@
1
+ class Article < ActiveRecord::Base
2
+ validates_presence_of :name
3
+ end
Binary file
@@ -0,0 +1,2 @@
1
+
2
+ 01:01:01 test
@@ -0,0 +1,6 @@
1
+ ActiveRecord::Schema.define do
2
+ self.verbose = false
3
+ create_table :articles, :force => true do |t|
4
+ t.string :name
5
+ end
6
+ end
data/test/helper.rb ADDED
@@ -0,0 +1,28 @@
1
+ require 'active_record'
2
+ require 'active_support'
3
+ require 'test/unit'
4
+ require 'timecop'
5
+ require 'redgreen'
6
+ require 'itslog'
7
+
8
+ ActiveRecord::Base.establish_connection \
9
+ :adapter => 'sqlite3',
10
+ :database => File.dirname(__FILE__) + '/fixtures/itslog.sqlite3'
11
+ load File.dirname(__FILE__) + '/fixtures/schema.rb'
12
+ load File.dirname(__FILE__) + '/fixtures/article.rb'
13
+
14
+ Itslog::Railtie.insert
15
+
16
+ def assert_log(log, msg, severity=0, namespace=nil)
17
+ level = [:debug, :info, :warn, :error, :fatal, :unknown]
18
+ Timecop.freeze(Time.parse('01:01:01'))
19
+ file_name = File.dirname(__FILE__) + '/fixtures/log.txt'
20
+ File.delete(file_name)
21
+ Rails.logger = ActiveSupport::BufferedLogger.new(file_name)
22
+ Rails.logger.namespace = namespace if namespace.present?
23
+ Rails.logger.send(level[severity], msg)
24
+ assert_equal log, File.read(file_name)
25
+ Timecop.return
26
+ end
27
+
28
+ class Test::Unit::TestCase; end
@@ -0,0 +1,60 @@
1
+ $LOAD_PATH.unshift File.dirname(__FILE__)
2
+ require 'helper'
3
+
4
+ class ItslogTest < Test::Unit::TestCase
5
+
6
+ def test_default_severity_color
7
+ Itslog::Configure.reset
8
+ assert_log "\n\e[37m01:01:01 \e[37mtest\n", 'test', 0
9
+ assert_log "\n\e[37m01:01:01 \e[37mtest\n", 'test', 1
10
+ assert_log "\n\e[33m01:01:01 \e[37mtest\n", 'test', 2
11
+ assert_log "\n\e[31m01:01:01 \e[37mtest\n", 'test', 3
12
+ assert_log "\n\e[31m01:01:01 \e[37mtest\n", 'test', 4
13
+ assert_log "\n\e[37m01:01:01 \e[37mtest\n", 'test', 5
14
+ end
15
+
16
+ def test_custom_severity_color
17
+ Itslog::Configure.reset
18
+ Itslog.configure do |config|
19
+ config.severity_colors = ['red', 'orange', 'yellow', 'green', 'blue', 'indigo']
20
+ config.color_by = :severity
21
+ end
22
+ assert_log "\nred01:01:01 \e[37mtest\n" , 'test', 0
23
+ assert_log "\norange01:01:01 \e[37mtest\n", 'test', 1
24
+ assert_log "\nyellow01:01:01 \e[37mtest\n", 'test', 2
25
+ assert_log "\ngreen01:01:01 \e[37mtest\n" , 'test', 3
26
+ assert_log "\nblue01:01:01 \e[37mtest\n" , 'test', 4
27
+ assert_log "\nindigo01:01:01 \e[37mtest\n", 'test', 5
28
+ end
29
+
30
+ def test_default_namespaces
31
+ Itslog::Configure.reset
32
+ assert_log "\e[32m01:01:01 action_controller \e[37mtest\n", 'test', 0, 'action_controller'
33
+ assert_log "\e[36m01:01:01 action_view \e[37mtest\n" , 'test', 0, 'action_view'
34
+ assert_log "\e[94m01:01:01 active_record \e[37mtest\n" , 'test', 0, 'active_record'
35
+ assert_log "\e[94m01:01:01 mongo \e[37mtest\n" , 'test', 0, 'mongo'
36
+ end
37
+
38
+ def test_custom_namespace_color
39
+ Itslog::Configure.reset
40
+ Itslog.configure do |config|
41
+ config.format = '%n %m'
42
+ config.namespace_colors = {
43
+ 'action_controller' => 'red',
44
+ 'action_view' => 'orange',
45
+ 'active_record' => 'yellow',
46
+ 'mongo' => 'green'}
47
+ end
48
+ assert_log "redaction_controller \e[37mtest\n", 'test', 0, 'action_controller'
49
+ assert_log "orangeaction_view \e[37mtest\n" , 'test', 0, 'action_view'
50
+ assert_log "yellowactive_record \e[37mtest\n" , 'test', 0, 'active_record'
51
+ assert_log "greenmongo \e[37mtest\n" , 'test', 0, 'mongo'
52
+ end
53
+
54
+ def test_custom_format
55
+ Itslog::Configure.reset
56
+ Itslog.configure { |config| config.format = '[%n] %m' }
57
+ assert_log "\n\e[37m[] \e[37mtest\n", 'test', 0
58
+ assert_log "\e[32m[action_controller] \e[37mtest\n", 'test', 0, 'action_controller'
59
+ end
60
+ end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: itslog
3
3
  version: !ruby/object:Gem::Version
4
- hash: 23
4
+ hash: 11
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
- - 3
9
- - 2
10
- version: 0.3.2
8
+ - 5
9
+ - 0
10
+ version: 0.5.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - John Thomas Marino
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-05-24 00:00:00 -04:00
18
+ date: 2011-06-28 00:00:00 -04:00
19
19
  default_executable:
20
20
  dependencies: []
21
21
 
@@ -36,6 +36,12 @@ files:
36
36
  - lib/itslog/railtie.rb
37
37
  - lib/itslog/version.rb
38
38
  - lib/itslog.rb
39
+ - test/fixtures/article.rb
40
+ - test/fixtures/itslog.sqlite3
41
+ - test/fixtures/log.txt
42
+ - test/fixtures/schema.rb
43
+ - test/helper.rb
44
+ - test/itslog_test.rb
39
45
  has_rdoc: true
40
46
  homepage: http://github.com/johmas/itslog
41
47
  licenses: []