NTP Analyzer  0.8.2
Analyze the operation of time servers
LogExtensions.cs
Go to the documentation of this file.
1 //
2 // Copyright (c) 2013-2017 Carsten Sonne Larsen <cs@innolan.net>
3 //
4 // Permission is hereby granted, free of charge, to any person obtaining a copy
5 // of this software and associated documentation files (the "Software"), to deal
6 // in the Software without restriction, including without limitation the rights
7 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8 // copies of the Software, and to permit persons to whom the Software is
9 // furnished to do so, subject to the following conditions:
10 //
11 // The above copyright notice and this permission notice shall be included in
12 // all copies or substantial portions of the Software.
13 //
14 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17 // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
20 // THE SOFTWARE.
21 
22 using System;
23 using System.Threading;
24 using Ntp.Common.Process;
25 
26 namespace Ntp.Common.Log
27 {
28  internal static class LogExtensions
29  {
30  internal static void ClusterError(this LogBase log, Exception e)
31  {
32  log.WriteLine(
33  "Error in scheduler module. Aborting.",
34  Severity.Error);
35 
36  log.WriteLine(e);
37  }
38 
39  internal static void ClusterNodeActive(this LogBase log, IRequest request)
40  {
41  log.WriteLine(
42  $"Cluster node {request} is active.",
43  Severity.Notice);
44  }
45 
46  internal static void ClusterNodeAlive(this LogBase log, IRequest request)
47  {
48  log.WriteLine(
49  $"Cluster node {request} is alive.",
50  Severity.Notice);
51  }
52 
53  internal static void ClusterNodeDead(this LogBase log, IRequest request)
54  {
55  log.WriteLine(
56  $"Cluster node {request} is dead.",
57  Severity.Notice);
58  }
59 
60  internal static void ClusterNodeError(this LogBase log, IRequest request, Exception e)
61  {
62  log.WriteLine(
63  $"Error while contacting cluster node {request}.",
64  Severity.Warn);
65 
66  log.WriteLine(e);
67  }
68 
69  internal static void ClusterStart(this LogBase log)
70  {
71  log.WriteLine(
72  "Starting cluster module.",
73  Severity.Info);
74  }
75 
76  internal static void HeartbeatStarted(this LogBase log, int interval)
77  {
78  log.WriteLine(
79  $"Heartbeat started with {interval} minutes interval.",
80  Severity.Notice);
81  }
82 
83  internal static void HeartbeatUptime(this LogBase log, string time)
84  {
85  log.WriteLine(
86  $"Heartbeat: Uptime is {time}.",
87  Severity.Notice);
88  }
89 
90  internal static void JobError(this LogBase log, Job job, Exception e)
91  {
92  log.WriteLine(
93  $"Error while executing {job}.",
94  Severity.Error);
95 
96  log.WriteLine(e);
97  }
98 
99  internal static void JobExecutionStatus(this LogBase log, Job job, bool error)
100  {
101  log.WriteLine(
102  error
103  ? $"{job} failed."
104  : $"{job} is done.",
105  Severity.Debug);
106  }
107 
108  internal static void ReceivedSignal(this LogBase log, string signal)
109  {
110  log.WriteLine(
111  $"Received signal {signal}",
112  Severity.Debug);
113  }
114 
115  internal static void SchedulerAbort(this LogBase log, Thread thread)
116  {
117  log.WriteLine(
118  $"Aborting thread {thread.Name}.",
119  Severity.Warn);
120  }
121 
122  internal static void SchedulerBehind(this LogBase log)
123  {
124  log.WriteLine(
125  "Behind schedule. Trying to catch up.",
126  Severity.Info);
127  }
128 
129  internal static void SchedulerError(this LogBase log, string name, Exception e)
130  {
131  log.WriteLine(
132  $"Unexpected error in thread {name}.",
133  Severity.Error);
134 
135  log.WriteLine(e);
136  }
137 
138  internal static void SchedulerFinished(this LogBase log)
139  {
140  log.WriteLine(
141  "All threads finished.",
142  Severity.Notice);
143  }
144 
145  internal static void SchedulerJobAdded(this LogBase log, JobDescription description, Job job)
146  {
147  var type = job.Description.JobType;
148  var freq = job.Schedule.Frequency;
149 
150  var desc = string.IsNullOrWhiteSpace(job.Description.Name)
151  ? string.Empty
152  : " " + description.Name;
153 
154  var fix = job.Schedule.FixedRun
155  ? "fixed "
156  : string.Empty;
157 
158  log.WriteLine(
159  freq != 0
160  ? $"{type} job{desc} added to scheduler with {fix}{freq} minutes run interval."
161  : $"{type} job{desc} added to scheduler for a single run.",
162  Severity.Info);
163  }
164 
165  internal static void SchedulerJobExecuting(this LogBase log, ScheduledJob next)
166  {
167  log.WriteLine(
168  $"{next.Job} started.",
169  Severity.Info);
170  }
171 
172  internal static void SchedulerJobStatus(this LogBase log, ScheduledJob scheduledJob)
173  {
174  string re = scheduledJob.Job.RunCount == 0 ? string.Empty : "re";
175 
176  log.WriteLine(
177  $"{scheduledJob.Job} {re}scheduled to run {scheduledJob.Run.ToString("HH:mm:ss")}",
178  Severity.Debug);
179  }
180 
181  internal static void SchedulerStart(this LogBase log, int count)
182  {
183  log.WriteLine(
184  $"Starting scheduler with {count} jobs.",
185  Severity.Info);
186  }
187 
188  internal static void SchedulerWaiting(this LogBase log, int count)
189  {
190  log.WriteLine(
191  $"Waiting for {count} threads to finish.",
192  Severity.Notice);
193  }
194 
195  internal static void ShellCommandError(this LogBase log, string message, string error)
196  {
197  log.WriteLine(
198  $"{message} {error}",
199  Severity.Warn);
200  }
201 
202  internal static void ShellCommandExecuting(this LogBase log, string command, string arguments)
203  {
204  log.WriteLine(
205  $"Executing: {command} {arguments}",
206  Severity.Debug);
207  }
208 
209  internal static void SignalClosing(this LogBase log)
210  {
211  log.WriteLine(
212  "Closing down.",
213  Severity.Notice);
214  }
215 
216  internal static void SignalError(this LogBase log, Exception e)
217  {
218  log.WriteLine(
219  "Unrecoverable error in UnixSignal.WaitAny()",
220  Severity.Error);
221 
222  log.WriteLine(e);
223  }
224 
225  internal static void SignalHandlerError(this LogBase log, Exception e)
226  {
227  log.WriteLine(
228  "Unrecoverable error in SignalHandler: {e.Message}",
229  Severity.Error);
230 
231  log.WriteLine(e);
232  }
233 
234  internal static void SignalInterProcError(this LogBase log)
235  {
236  log.WriteLine(
237  "Error in inter-process communication.",
238  Severity.Warn);
239  }
240 
241  internal static void SignalRefreshing(this LogBase log)
242  {
243  log.WriteLine(
244  "Refreshing logs.",
245  Severity.Notice);
246  }
247 
248  internal static void SignalReloading(this LogBase log)
249  {
250  log.WriteLine(
251  "Reloading configuration.",
252  Severity.Notice);
253  }
254 
255  internal static void UnexpectedSignal(this LogBase log)
256  {
257  log.WriteLine(
258  "Unexpected inter-process signal.",
259  Severity.Warn);
260  }
261 
262  internal static void UnknownSignal(this LogBase log, string signal)
263  {
264  log.WriteLine(
265  $"Received unknown signal {signal}",
266  Severity.Warn);
267  }
268  }
269 }
static void ClusterNodeActive(this LogBase log, IRequest request)
abstract void WriteLine(string text, Severity severity)
static void SchedulerJobStatus(this LogBase log, ScheduledJob scheduledJob)
static void UnexpectedSignal(this LogBase log)
static void SchedulerFinished(this LogBase log)
static void SchedulerBehind(this LogBase log)
static void ClusterNodeError(this LogBase log, IRequest request, Exception e)
static void HeartbeatUptime(this LogBase log, string time)
static void JobExecutionStatus(this LogBase log, Job job, bool error)
Job Job
Gets the job to execute.
Definition: ScheduledJob.cs:46
static void ClusterNodeDead(this LogBase log, IRequest request)
static void JobError(this LogBase log, Job job, Exception e)
static void UnknownSignal(this LogBase log, string signal)
static void SchedulerJobExecuting(this LogBase log, ScheduledJob next)
static void SchedulerJobAdded(this LogBase log, JobDescription description, Job job)
var e
Definition: bootstrap.min.js:6
JobScheduleDescription Schedule
Gets the schedule.
Definition: Job.cs:65
static void SchedulerAbort(this LogBase log, Thread thread)
abstract string JobType
Gets the type of the job as text.
int RunCount
Gets the number of times this Job have been executed.
Definition: Job.cs:101
A job which have been scheduled for execution.
Definition: ScheduledJob.cs:29
static void ShellCommandError(this LogBase log, string message, string error)
static void ClusterError(this LogBase log, Exception e)
int Frequency
Gets the schedule frequency in minutes.
static void SchedulerStart(this LogBase log, int count)
static void SignalRefreshing(this LogBase log)
static void ReceivedSignal(this LogBase log, string signal)
static void SchedulerError(this LogBase log, string name, Exception e)
static void ClusterStart(this LogBase log)
Base class for jobs following the GoF Command Pattern.
static void SignalReloading(this LogBase log)
bool FixedRun
Gets a value indicating whether this JobScheduleDescription has a fixed schedule frequency, eg. cannot be moved.
static void SchedulerWaiting(this LogBase log, int count)
static void ClusterNodeAlive(this LogBase log, IRequest request)
static void HeartbeatStarted(this LogBase log, int interval)
static void SignalClosing(this LogBase log)
static void ShellCommandExecuting(this LogBase log, string command, string arguments)
JobDescription Description
Gets the description.
Definition: Job.cs:71
static void SignalError(this LogBase log, Exception e)
static void SignalInterProcError(this LogBase log)
static void SignalHandlerError(this LogBase log, Exception e)