libutil++  1.9.3
 All Classes Functions Variables
MixedLogFormat.cpp
1 /*
2 ** libutil++
3 ** $Id: MixedLogFormat.cpp 1653 2016-02-28 19:54:59Z sella $
4 ** Copyright (c) 2011-2016 Digital Genesis, LLC. All Rights Reserved.
5 ** Released under the LGPL Version 2.1 License.
6 ** http://www.digitalgenesis.com
7 */
8 
9 static const char rcsid[] __attribute__((used)) = "$Id: MixedLogFormat.cpp 1653 2016-02-28 19:54:59Z sella $";
10 
11 #include "MixedLogFormat.h"
12 #include "Log.h"
13 #include "../Exception.h"
14 
15 #include <sys/time.h>
16 #include <string.h>
17 #include <stdio.h>
18 
19 #include <string>
20 
21 #define BUFFER_SIZE (64 * 1024)
22 
23 using namespace sella::util;
24 
25 MixedLogFormat::MixedLogFormat(int threshold) throw () : threshold(threshold) { }
26 
27 MixedLogFormat* MixedLogFormat::clone(void) const throw () {
28  return new MixedLogFormat(*this);
29 }
30 
31 const std::string MixedLogFormat::format(int priority, const char *stamp, const char *func, const char *file, int line, const sella::Exception &e, const char *message) throw () {
32  char buffer[BUFFER_SIZE];
33 
34  if (priority >= threshold) {
35  if (message == NULL || message[0] == '\0') {
36  snprintf(buffer, sizeof(buffer), "%s [%s:%d %s]", e.what(), e.getFile().c_str(), e.getLine(), e.getFunction().c_str());
37  } else {
38  snprintf(buffer, sizeof(buffer), "%s - %s [%s:%d %s]", message, e.what(), e.getFile().c_str(), e.getLine(), e.getFunction().c_str());
39  }
40  } else {
41  if (message == NULL || message[0] == '\0') {
42  snprintf(buffer, sizeof(buffer), "%s [%s:%d %s] <- [%s:%d %s]", e.what(), file, line, func, e.getFile().c_str(), e.getLine(), e.getFunction().c_str());
43  } else {
44  snprintf(buffer, sizeof(buffer), "%s - %s [%s:%d %s] <- [%s:%d %s]", message, e.what(), file, line, func, e.getFile().c_str(), e.getLine(), e.getFunction().c_str());
45  }
46  }
47 
48  return std::string(buffer);
49 }
50 
51 const std::string MixedLogFormat::format(int priority, const char *stamp, const char *func, const char *file, int line, const char *message) throw () {
52  char buffer[BUFFER_SIZE];
53 
54  if (priority >= threshold) {
55  snprintf(buffer, sizeof(buffer), "%s", message);
56  } else {
57  snprintf(buffer, sizeof(buffer), "%s [%s:%d %s]", message, file, line, func);
58  }
59 
60  return std::string(buffer);
61 }
62 
63 const std::string MixedLogFormat::format(int priority, const char *stamp, const char *func, const char *file, int line, const char *option, const char *message) throw () {
64  char buffer[BUFFER_SIZE];
65 
66  if (priority >= threshold) {
67  snprintf(buffer, sizeof(buffer), "%s {%s}", message, option);
68  } else {
69  snprintf(buffer, sizeof(buffer), "%s [%s:%d %s] {%s}", message, file, line, func, option);
70 
71  }
72 
73  return std::string(buffer);
74 }
75 
76 /*
77 ** vim: noet ts=3 sw=3
78 */