summaryrefslogtreecommitdiff
path: root/pjlib/src/pj/log.c
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2008-07-19 17:53:47 +0000
committerBenny Prijono <bennylp@teluu.com>2008-07-19 17:53:47 +0000
commit2f89f6ad8e113cb108795d7ef2b6d81eb92c9a2a (patch)
tree6d99dd7ac0fc51a29039b25a0ccf009e7b3a4df3 /pjlib/src/pj/log.c
parent2a67327941910feadbfd953e4f8b53e675d5fe1a (diff)
Ticket #571: Coloring for logs in Linux/UNIX, two more spaces in logs and runtime log colors configuration (thanks Ondrej.Sterbak)
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@2159 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjlib/src/pj/log.c')
-rw-r--r--pjlib/src/pj/log.c86
1 files changed, 84 insertions, 2 deletions
diff --git a/pjlib/src/pj/log.c b/pjlib/src/pj/log.c
index 164e25d0..863d868d 100644
--- a/pjlib/src/pj/log.c
+++ b/pjlib/src/pj/log.c
@@ -31,7 +31,35 @@ static int pj_log_max_level = PJ_LOG_MAX_LEVEL;
#endif
static pj_log_func *log_writer = &pj_log_write;
static unsigned log_decor = PJ_LOG_HAS_TIME | PJ_LOG_HAS_MICRO_SEC |
- PJ_LOG_HAS_SENDER | PJ_LOG_HAS_NEWLINE;
+ PJ_LOG_HAS_SENDER | PJ_LOG_HAS_NEWLINE |
+ PJ_LOG_HAS_SPACE
+#if defined(PJ_WIN32) && PJ_WIN32!=0
+ | PJ_LOG_HAS_COLOR
+#endif
+ ;
+
+static pj_color_t PJ_LOG_COLOR_0 = PJ_TERM_COLOR_BRIGHT | PJ_TERM_COLOR_R;
+static pj_color_t PJ_LOG_COLOR_1 = PJ_TERM_COLOR_BRIGHT | PJ_TERM_COLOR_R;
+static pj_color_t PJ_LOG_COLOR_2 = PJ_TERM_COLOR_BRIGHT |
+ PJ_TERM_COLOR_R |
+ PJ_TERM_COLOR_G;
+static pj_color_t PJ_LOG_COLOR_3 = PJ_TERM_COLOR_BRIGHT |
+ PJ_TERM_COLOR_R |
+ PJ_TERM_COLOR_G |
+ PJ_TERM_COLOR_B;
+static pj_color_t PJ_LOG_COLOR_4 = PJ_TERM_COLOR_R |
+ PJ_TERM_COLOR_G |
+ PJ_TERM_COLOR_B;
+static pj_color_t PJ_LOG_COLOR_5 = PJ_TERM_COLOR_R |
+ PJ_TERM_COLOR_G |
+ PJ_TERM_COLOR_B;
+static pj_color_t PJ_LOG_COLOR_6 = PJ_TERM_COLOR_R |
+ PJ_TERM_COLOR_G |
+ PJ_TERM_COLOR_B;
+/* Default terminal color */
+static pj_color_t PJ_LOG_COLOR_77 = PJ_TERM_COLOR_R |
+ PJ_TERM_COLOR_G |
+ PJ_TERM_COLOR_B;
#if PJ_LOG_USE_STACK_BUFFER==0
static char log_buffer[PJ_LOG_MAX_SIZE];
@@ -47,6 +75,56 @@ PJ_DEF(unsigned) pj_log_get_decor(void)
return log_decor;
}
+PJ_DEF(void) pj_log_set_color(int level, pj_color_t color)
+{
+ switch (level)
+ {
+ case 0: PJ_LOG_COLOR_0 = color;
+ break;
+ case 1: PJ_LOG_COLOR_1 = color;
+ break;
+ case 2: PJ_LOG_COLOR_2 = color;
+ break;
+ case 3: PJ_LOG_COLOR_3 = color;
+ break;
+ case 4: PJ_LOG_COLOR_4 = color;
+ break;
+ case 5: PJ_LOG_COLOR_5 = color;
+ break;
+ case 6: PJ_LOG_COLOR_6 = color;
+ break;
+ /* Default terminal color */
+ case 77: PJ_LOG_COLOR_77 = color;
+ break;
+ default:
+ /* Do nothing */
+ break;
+ }
+}
+
+PJ_DEF(pj_color_t) pj_log_get_color(int level)
+{
+ switch (level) {
+ case 0:
+ return PJ_LOG_COLOR_0;
+ case 1:
+ return PJ_LOG_COLOR_1;
+ case 2:
+ return PJ_LOG_COLOR_2;
+ case 3:
+ return PJ_LOG_COLOR_3;
+ case 4:
+ return PJ_LOG_COLOR_4;
+ case 5:
+ return PJ_LOG_COLOR_5;
+ case 6:
+ return PJ_LOG_COLOR_6;
+ default:
+ /* Return default terminal color */
+ return PJ_LOG_COLOR_77;
+ }
+}
+
PJ_DEF(void) pj_log_set_level(int level)
{
pj_log_max_level = level;
@@ -105,7 +183,7 @@ PJ_DEF(void) pj_log( const char *sender, int level,
pre += pj_utoa_pad(ptime.mon+1, pre, 2, '0');
}
if (log_decor & PJ_LOG_HAS_DAY_OF_MON) {
- *pre++ = ' ';
+ *pre++ = '-';
pre += pj_utoa_pad(ptime.day, pre, 2, '0');
}
if (log_decor & PJ_LOG_HAS_TIME) {
@@ -139,6 +217,10 @@ PJ_DEF(void) pj_log( const char *sender, int level,
if (log_decor != 0 && log_decor != PJ_LOG_HAS_NEWLINE)
*pre++ = ' ';
+ if (log_decor & PJ_LOG_HAS_SPACE) {
+ *pre++ = ' ';
+ }
+
len = pre - log_buffer;
/* Print the whole message to the string log_buffer. */