iotivity 0.9.0
[platform/upstream/iotivity.git] / resource / csdk / connectivity / common / src / oic_console_logger.c
1 //******************************************************************
2 //
3 // Copyright 2014 Intel Mobile Communications GmbH All Rights Reserved.
4 //
5 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
6 //
7 // Licensed under the Apache License, Version 2.0 (the "License");
8 // you may not use this file except in compliance with the License.
9 // You may obtain a copy of the License at
10 //
11 //      http://www.apache.org/licenses/LICENSE-2.0
12 //
13 // Unless required by applicable law or agreed to in writing, software
14 // distributed under the License is distributed on an "AS IS" BASIS,
15 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 // See the License for the specific language governing permissions and
17 // limitations under the License.
18 //
19 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
20
21 #include "oic_logger.h"
22 #include "oic_console_logger.h"
23
24 #include <stdio.h>
25 #include <stdlib.h>
26
27 typedef struct
28 {
29     FILE *out;
30 } oic_console_logger_ctx;
31
32 oic_log_ctx_t *oic_make_console_logger()
33 {
34     return oic_log_make_ctx(NULL, OIC_LOG_ALL, oic_console_logger_init, oic_console_logger_destroy,
35             oic_console_logger_flush, oic_console_logger_set_level, oic_console_logger_write,
36             oic_console_logger_set_module);
37 }
38
39 int oic_console_logger_init(oic_log_ctx_t *ctx, void *world)
40 {
41     oic_console_logger_ctx *my_ctx;
42
43     my_ctx = (oic_console_logger_ctx *) malloc(sizeof(oic_console_logger_ctx));
44
45     if (0 == my_ctx)
46         return 0;
47
48     my_ctx->out = stderr;
49
50     ctx->ctx = (void *) my_ctx;
51
52     return 1;
53 }
54
55 void oic_console_logger_destroy(oic_log_ctx_t *ctx)
56 {
57     oic_console_logger_ctx *lctx = (oic_console_logger_ctx *) ctx->ctx;
58
59     fflush(lctx->out);
60
61     free(lctx);
62 }
63
64 void oic_console_logger_flush(oic_log_ctx_t *ctx)
65 {
66     oic_console_logger_ctx *lctx = (oic_console_logger_ctx *) ctx->ctx;
67
68     fflush(lctx->out);
69 }
70
71 void oic_console_logger_set_level(oic_log_ctx_t *ctx, const int level)
72 {
73     /* We don't have any special thing we need to do when a log level changes. */
74     return;
75 }
76
77 size_t oic_console_logger_write(oic_log_ctx_t *ctx, const int level, const char *msg)
78 {
79     oic_console_logger_ctx *lctx = (oic_console_logger_ctx *) ctx->ctx;
80
81     /* A "real" implementation might want to replace the loglevel with a mnemonic: */
82
83     if (0 == ctx->module_name)
84         return 1 + fprintf(lctx->out, "%d: %s\n", level, msg);
85
86     return 1 + fprintf(lctx->out, "%d: [%s]: %s\n", level, ctx->module_name, msg);
87 }
88
89 int oic_console_logger_set_module(oic_log_ctx_t *ctx, const char *module_name)
90 {
91     /* We don't do anything special when the module name changes: */
92     return 1;
93 }