Add module no, message level and ored value to log
[yaz-moved-to-github.git] / test / test_log.c
1 /* This file is part of the YAZ toolkit.
2  * Copyright (C) 1995-2012 Index Data
3  * See the file LICENSE for details.
4  */
5 #if HAVE_CONFIG_H
6 #include <config.h>
7 #endif
8
9 #include <stdio.h>
10 #include <string.h>
11 #include <stdlib.h>
12 #include <yaz/options.h>
13 #include <yaz/log.h>
14 #if HAVE_UNISTD_H
15 #include <unistd.h>
16 #endif
17
18 void hook_func(int level, const char *msg, void *vp)
19 {
20     fprintf(stderr, "[HOOK level=%d msg=%s]\n", level, msg);
21 }
22
23 int main(int argc, char **argv)
24 {
25     char *arg;
26     int i, ret;
27     int message_level = YLOG_LOG;
28     int module_no = 0;
29     int number = 1;
30     unsigned int wait_between_log = 0;
31
32     while ((ret = options("f:p:v:l:m:M:n:r:w:Hh", argv, argc, &arg)) != -2)
33     {
34         switch (ret)
35         {
36         case 'r':
37             yaz_log_init_max_size(atoi(arg));
38             break;
39         case 'f':
40             yaz_log_time_format(arg);
41             break;
42         case 'p':
43             yaz_log_init_prefix(arg);
44             break;
45         case 'v':
46             yaz_log_init_level(yaz_log_mask_str(arg));
47             break;
48         case 'l':
49             if (!strcmp(arg, "@"))
50                 yaz_log_init_file(0);
51             else
52                 yaz_log_init_file(arg);
53             break;
54         case 'n':
55             number = atoi(arg);
56             break;
57         case 'm':        
58             module_no = yaz_log_module_level(arg);
59             break;
60         case 'M':
61             message_level = yaz_log_module_level(arg);
62             break;
63         case 'w':
64             wait_between_log = atoi(arg);
65             break;
66         case 'H':
67             yaz_log_set_handler(hook_func, 0);
68             break;
69         case 0:
70             for (i = 0; i<number; i++)
71             {
72                 yaz_log(module_no|message_level, "module no: %d, message_level: %d combined: %d %d %s", module_no, message_level, module_no|message_level, i, arg);
73 #if HAVE_UNISTD_H
74                 if (wait_between_log)
75                     sleep(wait_between_log);
76 #endif
77             }
78             break;
79         case 'h':
80         default:
81             fprintf(stderr, "tstlog [-f logformat] [-v level] [-l file] "
82                     "[-p prefix] [-m module] -M [message log level] [-w sec] [-r max] [-n num] [-H] msg ..\n");
83             exit(1);
84         }
85     }
86     exit(0);
87 }
88 /*
89  * Local variables:
90  * c-basic-offset: 4
91  * c-file-style: "Stroustrup"
92  * indent-tabs-mode: nil
93  * End:
94  * vim: shiftwidth=4 tabstop=8 expandtab
95  */
96