quickbase_logger 0.0.2 → 0.1.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: cd97401e3954fe004aadd70e4ae411cda9ffb399
4
- data.tar.gz: ebb5998fb7323b845fefdc1eb7f125638387bd3e
3
+ metadata.gz: efa3a3cc1ebde57d54f764d842ce953b61c3029b
4
+ data.tar.gz: fd3a0fea2568617f71c3e29cf62c431ea8ccbc0c
5
5
  SHA512:
6
- metadata.gz: bd8bb9c8688a4fb53de27d8064148fad907a009cba46943ed15f8dd1962f7eb46e80e603a654368afcac4453b2572b8dbe63f741d31f3fda2bf4bb3bc6b1f835
7
- data.tar.gz: a2cce192236c0121548fd3efd6933582f8812941b39f899f3d340b5d63b13114641bd3a3213a701aaadf684e884a66e5d72fc91f05884314ce5fbf9b61d9ebb0
6
+ metadata.gz: 6a336837b323bb72c668fd99d5e8e31f809dccfee29763468c9017f3a393c23b8808b7330f1dbbdd5775ad881a4c18fab5b90481446297e282051a36ab392ec3
7
+ data.tar.gz: 70a958cd4efabf05b31eaedf1cd7cd93e13399a4a80f2ab77baf2c310df14f050208134b94a9df48f05e2b6b32ce7701a8fcff3c414159e161677777ea256f3a
data/.gitignore CHANGED
@@ -14,4 +14,5 @@
14
14
  *.a
15
15
  mkmf.log
16
16
  *.DS_Store
17
- *.gem
17
+ *.gem
18
+ *.log
data/README.md CHANGED
@@ -70,12 +70,23 @@ QuickbaseLogger is built on top of the wonderful [QuickbaseRecord](https://githu
70
70
  ### Methods and API
71
71
  Using QuickbaseLogger is as simple as instantiating an instance of QuickbaseLogger::Logger and wrapping any code you want logged to your Script Logs QuickBase table in the #log_to_quickbase method on that instance.
72
72
 
73
+ ##### Text Logger File Name
73
74
  QuickbaseLogger::Logger.new accepts a :related_script argument that is the [Record ID#] of the parent Script record, and an optional :file_name argument for the name of the text log file. If no :file_name argument is given it will default to "quickbase_logger_default"
74
75
 
75
76
  ```ruby
76
77
  qb_logger = QuickbaseLogger::Logger.new(related_script: 123, file_name: 'my_awesome_log_file')
77
78
  ```
78
79
 
80
+ ##### Purge Old Logs
81
+ By default, the Script Log records in QuickBase that are related to the current QuickbaseLogger::Logger instance will be deleted after 180 days. To override this functionality you can add a :purge_frequency argument to the .new method. This should be an integer value representing the number of days after which to delete records (based on the [Date Created] field in QuickBase).
82
+
83
+ ```ruby
84
+ # "purge_frequency: 7" means that Script Log records created before 7 days ago will be deleted at the end of the #log_to_quickbase method execution
85
+ qb_logger = QuickbaseLogger::Logger.new(related_script: 123, file_name: 'my_awesome_log_file', purge_frequency: 7)
86
+ ```
87
+
88
+
89
+ ##### #log_to_quickbase
79
90
  The instance returned from QuickbaseLogger::Logger.new has a method named #log_to_quickbase that accepts a block of code you want to capture in you logs. While inside the scope of the #log_to_quickbase method, you have access to #info(message), #warn(message), and #error(message) methods on the logger instance that simply log the given message to the :log field on the Script Logs table in QuickBase as well as the text logger. Each of these methods will capture the time of the log automatically.
80
91
 
81
92
  ```ruby
@@ -109,7 +120,7 @@ class SomeAwesomeScript
109
120
  end
110
121
  ```
111
122
 
112
- Here's how the #log_to_quickbase method is structured (for your reference):
123
+ Here's how the source code for the #log_to_quickbase method is structured (for your reference):
113
124
 
114
125
  ```ruby
115
126
  def log_to_quickbase
@@ -2,18 +2,21 @@ module QuickbaseLogger
2
2
  class Logger
3
3
  include QuickbaseRecord::Model
4
4
 
5
- attr_accessor :text_logger
5
+ attr_accessor :text_logger, :purge_frequency
6
6
 
7
7
  def initialize(options={})
8
8
  raise ArgumentError.new("QuickbaseLogger::Logger.new must receive a :related_script argument.") unless options[:related_script]
9
9
 
10
10
  @log = []
11
11
  @start = "#{formatted_date} #{formatted_time}"
12
+ @purge_frequency = options.fetch(:purge_frequency, 180)
12
13
 
13
14
  file_name = options.fetch(:file_name, 'quickbase_logger_default')
14
15
  @text_logger = ::Logger.new("#{formatted_logger_path}#{file_name}.log", "monthly") # standard ruby Logger instance
16
+ @text_logger.info("===== #{Date.today.strftime('%m/%d/%Y')} =====")
15
17
  @text_logger.info("START")
16
- super
18
+
19
+ super(options)
17
20
  end
18
21
 
19
22
  def log_to_quickbase
@@ -28,6 +31,8 @@ module QuickbaseLogger
28
31
  log_failure_to_quickbase(err)
29
32
  raise err
30
33
  end
34
+
35
+ purge_logs
31
36
  end
32
37
 
33
38
  def info(message)
@@ -42,17 +47,32 @@ module QuickbaseLogger
42
47
  log << "Error [#{formatted_time}]: #{message}"
43
48
  end
44
49
 
50
+ def purge_logs
51
+ purge_date = Date.today - purge_frequency.days
52
+ purge_date = purge_date.strftime("%m/%d/%Y")
53
+ related_script_fid = self.class.fields[:related_script].fid
54
+
55
+ begin
56
+ qb_client.purge_records(self.class.dbid, {query: "{#{related_script_fid}.EX.#{related_script}}AND{1.OBF.#{purge_date}}"})
57
+ rescue StandardError => e
58
+ text_logger.error("--- FAILED TO PURGE OLD RECORDS ---")
59
+ text_logger.error(err)
60
+ text_logger.error("BACKTRACE:\n\t#{err.backtrace.slice(0, 10).join("\n\t")}")
61
+ raise err
62
+ end
63
+ end
64
+
45
65
  private
46
66
 
47
67
  def log_success_to_text_file
48
- joined_logs = self.log.join("\n")
49
- text_logger.info("LOGS:\n#{joined_logs}")
68
+ joined_logs = self.log.join("\n\t")
69
+ text_logger.info("LOGS:\n\t#{joined_logs}")
50
70
  text_logger.info("END")
51
71
  end
52
72
 
53
73
  def log_failure_to_text_file(err)
54
- joined_logs = self.log.join("\n")
55
- text_logger.info("LOGS:\n#{joined_logs}")
74
+ joined_logs = self.log.join("\n\t")
75
+ text_logger.info("LOGS:\n\t#{joined_logs}")
56
76
 
57
77
  text_logger.error("ERROR: #{err}")
58
78
  text_logger.error("BACKTRACE:\n\t#{err.backtrace.slice(0, 10).join("\n\t")}")
@@ -67,7 +87,7 @@ module QuickbaseLogger
67
87
  begin
68
88
  save
69
89
  rescue StandardError => err
70
- text_logger.error("-- COULD NOT WRITE SUCCESS TO QUICKBASE --")
90
+ text_logger.error("--- COULD NOT WRITE SUCCESS TO QUICKBASE ---")
71
91
  text_logger.error(err)
72
92
  text_logger.error("BACKTRACE:\n\t#{err.backtrace.slice(0, 10).join("\n\t")}")
73
93
  raise err
@@ -85,7 +105,7 @@ module QuickbaseLogger
85
105
  begin
86
106
  save
87
107
  rescue StandardError => err
88
- text_logger.error("-- COULD NOT WRITE FAILURE TO QUICKBASE --")
108
+ text_logger.error("--- COULD NOT WRITE FAILURE TO QUICKBASE ---")
89
109
  text_logger.error(err)
90
110
  text_logger.error("BACKTRACE:\n\t#{err.backtrace.slice(0, 10).join("\n\t")}")
91
111
  raise err
@@ -1,3 +1,3 @@
1
1
  module QuickbaseLogger
2
- VERSION = "0.0.2"
2
+ VERSION = "0.1.0"
3
3
  end
@@ -19,9 +19,16 @@ end
19
19
 
20
20
  RSpec.describe QuickbaseLogger::Logger do
21
21
  describe '.initialize' do
22
+ before do
23
+ @logger = QuickbaseLogger::Logger.new(related_script: 123)
24
+ end
25
+
22
26
  it "defines a parent script that all log records will be related to" do
23
- logger = QuickbaseLogger::Logger.new(related_script: 123)
24
- expect(logger.related_script).to eq(123)
27
+ expect(@logger.related_script).to eq(123)
28
+ end
29
+
30
+ it "sets a default purge_frequency of 180 days" do
31
+ expect(@logger.purge_frequency).to eq(180)
25
32
  end
26
33
  end
27
34
 
@@ -32,9 +39,19 @@ RSpec.describe QuickbaseLogger::Logger do
32
39
  expect(qb_logger).to receive(:save)
33
40
 
34
41
  qb_logger.log_to_quickbase do
35
- qb_logger.info('Hello, world!')
36
- qb_logger.warn('Danger ahead...')
37
- qb_logger.error('OH NO!!!')
42
+ qb_logger.info('testing that #save is called')
43
+ end
44
+ end
45
+
46
+ it "deletes records older than the purge frequency" do
47
+ qb_logger = QuickbaseLogger::Logger.new(related_script: 1, purge_frequency: 0)
48
+ purge_date = Date.today.strftime("%m/%d/%Y")
49
+
50
+ # the query "{10.EX.1}AND{1.OBF.#{purge_date}}" uses the FID for related_script and date_created, respectively
51
+ expect_any_instance_of(AdvantageQuickbase::API).to receive(:purge_records).with('bkd86zn87', {query: "{10.EX.1}AND{1.OBF.#{purge_date}}"})
52
+
53
+ qb_logger.log_to_quickbase do
54
+ qb_logger.info('testing that #purge_records is called')
38
55
  end
39
56
  end
40
57
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: quickbase_logger
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Cullen Jett
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-11-13 00:00:00.000000000 Z
11
+ date: 2015-12-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -87,7 +87,6 @@ files:
87
87
  - lib/quickbase_logger/logger.rb
88
88
  - lib/quickbase_logger/version.rb
89
89
  - quickbase_logger.gemspec
90
- - spec/log/quickbase_logger_default.log
91
90
  - spec/quickbase_logger_spec.rb
92
91
  - spec/spec_helper.rb
93
92
  homepage: https://github.com/cullenjett/quickbase_logger
@@ -115,6 +114,5 @@ signing_key:
115
114
  specification_version: 4
116
115
  summary: Use Quickbase tables as a logging platform
117
116
  test_files:
118
- - spec/log/quickbase_logger_default.log
119
117
  - spec/quickbase_logger_spec.rb
120
118
  - spec/spec_helper.rb
File without changes