logster 1.3.1 → 1.3.2

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.
Files changed (114) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +18 -18
  3. data/.travis.yml +15 -15
  4. data/CHANGELOG.md +140 -137
  5. data/Gemfile +4 -4
  6. data/Guardfile +8 -8
  7. data/LICENSE.txt +22 -22
  8. data/README.md +99 -99
  9. data/Rakefile +24 -24
  10. data/assets/fonts/FontAwesome.otf +0 -0
  11. data/assets/fonts/fontawesome-webfont.eot +0 -0
  12. data/assets/fonts/fontawesome-webfont.svg +639 -639
  13. data/assets/fonts/fontawesome-webfont.ttf +0 -0
  14. data/assets/fonts/fontawesome-webfont.woff +0 -0
  15. data/assets/fonts/fontawesome-webfont.woff2 +0 -0
  16. data/assets/images/Icon-144_rounded.png +0 -0
  17. data/assets/images/Icon-144_square.png +0 -0
  18. data/assets/images/icon_144x144.png +0 -0
  19. data/assets/images/icon_64x64.png +0 -0
  20. data/assets/javascript/client-app.js +92 -81
  21. data/assets/stylesheets/client-app.css +1 -1
  22. data/build_client_app.sh +0 -0
  23. data/client-app/.editorconfig +20 -20
  24. data/client-app/.ember-cli +9 -9
  25. data/client-app/.eslintignore +19 -19
  26. data/client-app/.eslintrc.js +46 -46
  27. data/client-app/.gitignore +23 -23
  28. data/client-app/.travis.yml +27 -27
  29. data/client-app/.watchmanconfig +3 -3
  30. data/client-app/README.md +57 -57
  31. data/client-app/app/app.js +14 -14
  32. data/client-app/app/components/actions-menu.js +37 -0
  33. data/client-app/app/components/message-info.js +65 -18
  34. data/client-app/app/components/message-row.js +45 -45
  35. data/client-app/app/components/panel-resizer.js +75 -75
  36. data/client-app/app/components/tab-contents.js +27 -27
  37. data/client-app/app/components/tab-link.js +5 -5
  38. data/client-app/app/components/tabbed-section.js +32 -32
  39. data/client-app/app/components/time-formatter.js +25 -25
  40. data/client-app/app/components/update-time.js +21 -21
  41. data/client-app/app/controllers/index.js +92 -83
  42. data/client-app/app/controllers/show.js +13 -13
  43. data/client-app/app/index.html +29 -29
  44. data/client-app/app/initializers/app-init.js +72 -55
  45. data/client-app/app/lib/preload.js +14 -14
  46. data/client-app/app/lib/utilities.js +140 -140
  47. data/client-app/app/models/message-collection.js +158 -158
  48. data/client-app/app/models/message.js +99 -99
  49. data/client-app/app/resolver.js +3 -3
  50. data/client-app/app/router.js +14 -14
  51. data/client-app/app/routes/index.js +57 -53
  52. data/client-app/app/routes/show.js +14 -14
  53. data/client-app/app/styles/app.css +497 -387
  54. data/client-app/app/templates/application.hbs +2 -2
  55. data/client-app/app/templates/components/actions-menu.hbs +12 -0
  56. data/client-app/app/templates/components/message-info.hbs +41 -44
  57. data/client-app/app/templates/components/message-row.hbs +17 -17
  58. data/client-app/app/templates/components/panel-resizer.hbs +3 -0
  59. data/client-app/app/templates/components/tabbed-section.hbs +10 -10
  60. data/client-app/app/templates/components/time-formatter.hbs +1 -1
  61. data/client-app/app/templates/index.hbs +65 -57
  62. data/client-app/app/templates/show.hbs +7 -4
  63. data/client-app/config/environment.js +51 -51
  64. data/client-app/config/optional-features.json +3 -3
  65. data/client-app/config/targets.js +18 -18
  66. data/client-app/ember-cli-build.js +29 -29
  67. data/client-app/package-lock.json +11365 -11365
  68. data/client-app/package.json +56 -56
  69. data/client-app/testem.js +25 -25
  70. data/client-app/tests/index.html +34 -34
  71. data/client-app/tests/integration/components/actions-menu-test.js +26 -0
  72. data/client-app/tests/integration/components/message-info-test.js +26 -26
  73. data/client-app/tests/integration/components/message-row-test.js +26 -26
  74. data/client-app/tests/integration/components/panel-resizer-test.js +26 -26
  75. data/client-app/tests/integration/components/tab-contents-test.js +26 -26
  76. data/client-app/tests/integration/components/tab-link-test.js +26 -26
  77. data/client-app/tests/integration/components/tabbed-section-test.js +26 -26
  78. data/client-app/tests/integration/components/time-formatter-test.js +26 -26
  79. data/client-app/tests/integration/components/update-time-test.js +26 -26
  80. data/client-app/tests/test-helper.js +8 -8
  81. data/client-app/tests/unit/controllers/index-test.js +12 -12
  82. data/client-app/tests/unit/controllers/show-test.js +12 -12
  83. data/client-app/tests/unit/initializers/app-init-test.js +31 -31
  84. data/client-app/tests/unit/routes/index-test.js +11 -11
  85. data/client-app/tests/unit/routes/show-test.js +11 -11
  86. data/lib/examples/sidekiq_logster_reporter.rb +21 -21
  87. data/lib/logster.rb +54 -54
  88. data/lib/logster/base_store.rb +130 -130
  89. data/lib/logster/configuration.rb +25 -25
  90. data/lib/logster/ignore_pattern.rb +65 -65
  91. data/lib/logster/logger.rb +108 -108
  92. data/lib/logster/message.rb +227 -227
  93. data/lib/logster/middleware/debug_exceptions.rb +26 -26
  94. data/lib/logster/middleware/reporter.rb +56 -56
  95. data/lib/logster/middleware/viewer.rb +221 -220
  96. data/lib/logster/rails/railtie.rb +58 -58
  97. data/lib/logster/redis_store.rb +481 -481
  98. data/lib/logster/version.rb +3 -3
  99. data/lib/logster/web.rb +14 -14
  100. data/logster.gemspec +34 -34
  101. data/test/examples/test_sidekiq_reporter_example.rb +46 -46
  102. data/test/fake_data/Gemfile +4 -4
  103. data/test/fake_data/generate.rb +10 -10
  104. data/test/logster/middleware/test_reporter.rb +21 -21
  105. data/test/logster/middleware/test_viewer.rb +96 -96
  106. data/test/logster/test_base_store.rb +147 -147
  107. data/test/logster/test_ignore_pattern.rb +41 -41
  108. data/test/logster/test_logger.rb +80 -80
  109. data/test/logster/test_message.rb +34 -34
  110. data/test/logster/test_redis_rate_limiter.rb +230 -230
  111. data/test/logster/test_redis_store.rb +427 -427
  112. data/test/test_helper.rb +38 -38
  113. data/vendor/assets/javascripts/logster.js.erb +39 -39
  114. metadata +6 -2
@@ -1,2 +1,2 @@
1
- {{update-time}}
2
- {{outlet}}
1
+ {{update-time}}
2
+ {{outlet}}
@@ -0,0 +1,12 @@
1
+ {{#if actionsInMenu}}
2
+ {{#if showMenu}}
3
+ <div class="actions-menu">
4
+ {{yield}}
5
+ </div>
6
+ {{/if}}
7
+ <button {{action 'expandMenu'}} class="expand btn no-text"><i class='fa fa-ellipsis-h'></i></button>
8
+ <button {{action "share"}} class="share btn"><i class='fa fa-share'></i><span>Share</span></button>
9
+ {{else}}
10
+ {{yield}}
11
+ <button {{action "share"}} class="share btn"><i class='fa fa-share'></i><span>Share</span></button>
12
+ {{/if}}
@@ -1,44 +1,41 @@
1
- <div class="message-info">
2
- {{#tabbed-section}}
3
- {{#tab-contents name="info" hint="show info" currentMessage=currentMessage}}
4
- {{#if showTitle}}
5
- <h3>Message
6
- {{#if currentMessage.showCount}}
7
- ({{currentMessage.count}} copies reported)
8
- {{/if}}
9
- </h3>
10
- {{/if}}
11
- <pre>{{currentMessage.message}}</pre>
12
- {{/tab-contents}}
13
- {{#tab-contents name="backtrace" defaultTab="true" hint="show backtrace" currentMessage=currentMessage}}
14
- {{#if showTitle}}
15
- <h3>Backtrace</h3>
16
- {{/if}}
17
- <pre>{{currentMessage.backtrace}}</pre>
18
- {{/tab-contents}}
19
- {{#if currentMessage.env}}
20
- {{#tab-contents className="env" name="env" hint="show environment" currentMessage=currentMessage}}
21
- {{#if showTitle}}
22
- <h3>Env</h3>
23
- {{/if}}
24
- {{{currentMessage.envTable}}}
25
- {{/tab-contents}}
26
- {{/if}}
27
- {{/tabbed-section}}
28
-
29
- {{#if currentMessage}}
30
- <div class='message-actions'>
31
- {{#unless currentMessage.protected}}
32
- {{#if currentMessage.canSolve}}
33
- <button {{action 'solve'}} class="solve btn danger"><i class='fa fa-check-square-o'></i>Solve</button>
34
- {{/if}}
35
-
36
- <button {{action 'remove'}} class="delete btn danger"><i class='fa fa-trash-o'></i>Delete</button>
37
- <button {{action 'protect'}} class="protect btn"><i class='fa fa-lock'></i>Protect</button>
38
- {{else}}
39
- <button {{action 'unprotect'}} class="unprotect btn"><i class='fa fa-unlock'></i>Unprotect</button>
40
- {{/unless}}
41
- <a href="{{currentMessage.shareUrl}}" class="share btn"><i class='fa fa-share'></i>Share</a>
42
- </div>
43
- {{/if}}
44
- </div>
1
+ <div class="message-info">
2
+ {{#tabbed-section}}
3
+ {{#tab-contents name="info" hint="show info" currentMessage=currentMessage}}
4
+ {{#if showTitle}}
5
+ <h3>Message
6
+ {{#if currentMessage.showCount}}
7
+ ({{currentMessage.count}} copies reported)
8
+ {{/if}}
9
+ </h3>
10
+ {{/if}}
11
+ <pre>{{currentMessage.message}}</pre>
12
+ {{/tab-contents}}
13
+ {{#tab-contents name="backtrace" defaultTab="true" hint="show backtrace" currentMessage=currentMessage}}
14
+ {{#if showTitle}}
15
+ <h3>Backtrace</h3>
16
+ {{/if}}
17
+ <pre>{{currentMessage.backtrace}}</pre>
18
+ {{/tab-contents}}
19
+ {{#if currentMessage.env}}
20
+ {{#tab-contents className="env" name="env" hint="show environment" currentMessage=currentMessage}}
21
+ {{#if showTitle}}
22
+ <h3>Env</h3>
23
+ {{/if}}
24
+ {{{currentMessage.envTable}}}
25
+ {{/tab-contents}}
26
+ {{/if}}
27
+ {{/tabbed-section}}
28
+
29
+ {{#if currentMessage}}
30
+ <div class='message-actions'>
31
+ {{#actions-menu actionsInMenu=actionsInMenu share=(action "share")}}
32
+ {{#each buttons as |btn|}}
33
+ <button {{action btn.action}} class="{{btn.klass}} btn {{if btn.danger 'danger' ''}}">
34
+ <i class="fa fa-{{btn.icon}}"></i>
35
+ <span>{{btn.label}}</span>
36
+ </button>
37
+ {{/each}}
38
+ {{/actions-menu}}
39
+ </div>
40
+ {{/if}}
41
+ </div>
@@ -1,17 +1,17 @@
1
- <td class="count">
2
- {{#if model.showCount}}
3
- <span>{{model.count}}</span>
4
- {{/if}}
5
- </td>
6
- <td class="severity">{{{model.glyph}}}</td>
7
- <td class="message-body">
8
- <div class="message">
9
- {{model.displayMessage}}
10
- </div>
11
- </td>
12
- <td class='protected'>
13
- {{#if model.protected}}
14
- <i title="message is protected, clearing will not remove it" class='fa fa-lock'></i>
15
- {{/if}}
16
- </td>
17
- <td class="time">{{time-formatter timestamp=model.timestamp}}</td>
1
+ <td class="count">
2
+ {{#if model.showCount}}
3
+ <span>{{model.count}}</span>
4
+ {{/if}}
5
+ </td>
6
+ <td class="severity">{{{model.glyph}}}</td>
7
+ <td class="message-body">
8
+ <div class="message">
9
+ {{model.displayMessage}}
10
+ </div>
11
+ </td>
12
+ <td class='protected'>
13
+ {{#if model.protected}}
14
+ <i title="message is protected, clearing will not remove it" class='fa fa-lock'></i>
15
+ {{/if}}
16
+ </td>
17
+ <td class="time">{{time-formatter timestamp=model.timestamp}}</td>
@@ -0,0 +1,3 @@
1
+ <div class='line-1'></div>
2
+ <div class='line-2'></div>
3
+ <div class='line-3'></div>
@@ -1,10 +1,10 @@
1
- {{yield}}
2
- <ul class="tabs">
3
- {{#each tabs as |tab|}}
4
- <li>
5
- <a title="{{unbound tab.hint}}" href="#" class="{{if tab.active 'active'}}" {{action selectTab tab}}>
6
- {{unbound tab.name}}
7
- </a>
8
- </li>
9
- {{/each}}
10
- </ul>
1
+ {{yield}}
2
+ <ul class="tabs">
3
+ {{#each tabs as |tab|}}
4
+ <li>
5
+ <a title="{{unbound tab.hint}}" href="#" class="{{if tab.active 'active'}}" {{action selectTab tab}}>
6
+ {{unbound tab.name}}
7
+ </a>
8
+ </li>
9
+ {{/each}}
10
+ </ul>
@@ -1 +1 @@
1
- {{time}}
1
+ {{time}}
@@ -1,57 +1,65 @@
1
- <div id='top-panel'>
2
- <table id='log-table'>
3
- <thead>
4
- <tr>
5
- <th class="count"></th>
6
- <th class="severity"></th>
7
- <th class="info"></th>
8
- <th class="protected"></th>
9
- <th class="time"></th>
10
- </tr>
11
- </thead>
12
- <tbody>
13
- {{#if model.moreBefore}}
14
- <tr {{action "showMoreBefore"}} class="show-more">
15
- <td colspan=5>select to see {{model.totalBefore}} more</td>
16
- </tr>
17
- {{/if}}
18
- {{#each model.messages as |message|}}
19
- {{message-row model=message selectedMessage=(action "selectMessage")}}
20
- {{/each}}
21
- </tbody>
22
- </table>
23
- </div>
24
- {{panel-resizer}}
25
- <div id="bottom-panel">
26
- {{message-info currentMessage=currentMessage removeMessage=(action "removeMessage") solveMessage=(action "solveMessage")}}
27
-
28
- <div class="action-panel">
29
- <label class="debug">
30
- {{input type="checkbox" checked=showDebug}}
31
- Debug
32
- </label>
33
- <label class="info">
34
- {{input type="checkbox" checked=showInfo}}
35
- Info
36
- </label>
37
- <label class="warn">
38
- {{input type="checkbox" checked=showWarn}}
39
- <i class='fa fa-exclamation-circle warning'></i>
40
- Warning
41
- </label>
42
- <label class="error">
43
- {{input type="checkbox" checked=showErr}}
44
- <i class='fa fa-times-circle error'></i>
45
- Error
46
- </label>
47
- <label class="fatal">
48
- {{input type="checkbox" checked=showFatal}}
49
- <i class='fa fa-times-circle fatal'></i>
50
- Fatal
51
- </label>
52
- <label class="search">
53
- {{input type="textfield" placeholder="Search" value=search}}
54
- </label>
55
- <a class="clear btn danger" href {{action "clear"}}><i class='fa fa-times'></i> Clear logs</a>
56
- </div>
57
- </div>
1
+ <div id='top-panel'>
2
+ <table id='log-table'>
3
+ <thead>
4
+ <tr>
5
+ <th class="count"></th>
6
+ <th class="severity"></th>
7
+ <th class="info"></th>
8
+ <th class="protected"></th>
9
+ <th class="time"></th>
10
+ </tr>
11
+ </thead>
12
+ <tbody>
13
+ {{#if model.moreBefore}}
14
+ <tr {{action "showMoreBefore"}} class="show-more">
15
+ <td colspan=5>select to see {{model.totalBefore}} more</td>
16
+ </tr>
17
+ {{/if}}
18
+ {{#each model.messages as |message|}}
19
+ {{message-row model=message selectedMessage=(action "selectMessage")}}
20
+ {{/each}}
21
+ </tbody>
22
+ </table>
23
+ </div>
24
+ {{panel-resizer}}
25
+ <div id="bottom-panel">
26
+ {{message-info
27
+ currentMessage=currentMessage
28
+ removeMessage=(action "removeMessage")
29
+ solveMessage=(action "solveMessage")
30
+ actionsInMenu=actionsInMenu}}
31
+
32
+ <div class="action-panel">
33
+ <div class="severity-filters">
34
+ <div class="more-wrapping">
35
+ <label class="debug">
36
+ {{input type="checkbox" checked=showDebug}}
37
+ <span>Debug</span>
38
+ </label>
39
+ <label class="info">
40
+ {{input type="checkbox" checked=showInfo}}
41
+ <span>Info</span>
42
+ </label>
43
+ <label class="warn">
44
+ {{input type="checkbox" checked=showWarn}}
45
+ <i class='fa fa-exclamation-circle warning'></i>
46
+ <span>Warning</span>
47
+ </label>
48
+ <label class="error">
49
+ {{input type="checkbox" checked=showErr}}
50
+ <i class='fa fa-times-circle error'></i>
51
+ <span>Error</span>
52
+ </label>
53
+ <label class="fatal">
54
+ {{input type="checkbox" checked=showFatal}}
55
+ <i class='fa fa-times-circle fatal'></i>
56
+ <span>Fatal</span>
57
+ </label>
58
+ </div>
59
+ </div>
60
+ <div class="search-clear-all">
61
+ {{input type="textfield" class="search" placeholder="Search" value=search}}
62
+ <button class="clear btn danger" {{action "clear"}}><i class='fa fa-times'></i><span>Clear logs</span></button>
63
+ </div>
64
+ </div>
65
+ </div>
@@ -1,4 +1,7 @@
1
- {{#link-to 'index'}}Recent{{/link-to}}
2
- <div id="bottom-panel" class="full">
3
- {{message-info currentMessage=model showTitle="true"}}
4
- </div>
1
+ {{#link-to 'index'}}Recent{{/link-to}}
2
+ <div id="bottom-panel" class="full">
3
+ {{message-info
4
+ currentMessage=model
5
+ showTitle="true"
6
+ actionsInMenu=false}}
7
+ </div>
@@ -1,51 +1,51 @@
1
- 'use strict';
2
-
3
- module.exports = function(environment) {
4
- let ENV = {
5
- modulePrefix: 'client-app',
6
- environment,
7
- rootURL: '/logs',
8
- locationType: 'history',
9
- EmberENV: {
10
- FEATURES: {
11
- // Here you can enable experimental features on an ember canary build
12
- // e.g. 'with-controller': true
13
- },
14
- EXTEND_PROTOTYPES: {
15
- // Prevent Ember Data from overriding Date.parse.
16
- Date: false
17
- }
18
- },
19
-
20
- APP: {
21
- // Here you can pass flags/options to your application instance
22
- // when it is created
23
- }
24
- };
25
-
26
- if (environment === 'development') {
27
- // ENV.APP.LOG_RESOLVER = true;
28
- // ENV.APP.LOG_ACTIVE_GENERATION = true;
29
- // ENV.APP.LOG_TRANSITIONS = true;
30
- // ENV.APP.LOG_TRANSITIONS_INTERNAL = true;
31
- // ENV.APP.LOG_VIEW_LOOKUPS = true;
32
- }
33
-
34
- if (environment === 'test') {
35
- // Testem prefers this...
36
- ENV.locationType = 'none';
37
-
38
- // keep test console output quieter
39
- ENV.APP.LOG_ACTIVE_GENERATION = false;
40
- ENV.APP.LOG_VIEW_LOOKUPS = false;
41
-
42
- ENV.APP.rootElement = '#ember-testing';
43
- ENV.APP.autoboot = false;
44
- }
45
-
46
- if (environment === 'production') {
47
- // here you can enable a production-specific feature
48
- }
49
-
50
- return ENV;
51
- };
1
+ 'use strict';
2
+
3
+ module.exports = function(environment) {
4
+ let ENV = {
5
+ modulePrefix: 'client-app',
6
+ environment,
7
+ rootURL: '/logs',
8
+ locationType: 'history',
9
+ EmberENV: {
10
+ FEATURES: {
11
+ // Here you can enable experimental features on an ember canary build
12
+ // e.g. 'with-controller': true
13
+ },
14
+ EXTEND_PROTOTYPES: {
15
+ // Prevent Ember Data from overriding Date.parse.
16
+ Date: false
17
+ }
18
+ },
19
+
20
+ APP: {
21
+ // Here you can pass flags/options to your application instance
22
+ // when it is created
23
+ }
24
+ };
25
+
26
+ if (environment === 'development') {
27
+ // ENV.APP.LOG_RESOLVER = true;
28
+ // ENV.APP.LOG_ACTIVE_GENERATION = true;
29
+ // ENV.APP.LOG_TRANSITIONS = true;
30
+ // ENV.APP.LOG_TRANSITIONS_INTERNAL = true;
31
+ // ENV.APP.LOG_VIEW_LOOKUPS = true;
32
+ }
33
+
34
+ if (environment === 'test') {
35
+ // Testem prefers this...
36
+ ENV.locationType = 'none';
37
+
38
+ // keep test console output quieter
39
+ ENV.APP.LOG_ACTIVE_GENERATION = false;
40
+ ENV.APP.LOG_VIEW_LOOKUPS = false;
41
+
42
+ ENV.APP.rootElement = '#ember-testing';
43
+ ENV.APP.autoboot = false;
44
+ }
45
+
46
+ if (environment === 'production') {
47
+ // here you can enable a production-specific feature
48
+ }
49
+
50
+ return ENV;
51
+ };
@@ -1,3 +1,3 @@
1
- {
2
- "jquery-integration": true
3
- }
1
+ {
2
+ "jquery-integration": true
3
+ }
@@ -1,18 +1,18 @@
1
- 'use strict';
2
-
3
- const browsers = [
4
- 'last 1 Chrome versions',
5
- 'last 1 Firefox versions',
6
- 'last 1 Safari versions'
7
- ];
8
-
9
- const isCI = !!process.env.CI;
10
- const isProduction = process.env.EMBER_ENV === 'production';
11
-
12
- if (isCI || isProduction) {
13
- browsers.push('ie 11');
14
- }
15
-
16
- module.exports = {
17
- browsers
18
- };
1
+ 'use strict';
2
+
3
+ const browsers = [
4
+ 'last 1 Chrome versions',
5
+ 'last 1 Firefox versions',
6
+ 'last 1 Safari versions'
7
+ ];
8
+
9
+ const isCI = !!process.env.CI;
10
+ const isProduction = process.env.EMBER_ENV === 'production';
11
+
12
+ if (isCI || isProduction) {
13
+ browsers.push('ie 11');
14
+ }
15
+
16
+ module.exports = {
17
+ browsers
18
+ };