thermferm/logger.c

changeset 86
3d7a241329e2
parent 65
a08a1fce439e
child 104
5e538c4e1ecb
equal deleted inserted replaced
85:c3cc6e44d1a4 86:3d7a241329e2
20 * Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. 20 * Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
21 *****************************************************************************/ 21 *****************************************************************************/
22 22
23 #include "thermferm.h" 23 #include "thermferm.h"
24 24
25 //char check[10240] = "";
26
27 25
28 void logger(char *filename, char *progname, char *data) 26 void logger(char *filename, char *progname, char *data)
29 { 27 {
30 struct timeval now; 28 struct timeval now;
31 struct tm ptm; 29 struct tm ptm;
32 char *outstr = NULL, *name = NULL; 30 char *outstr = NULL, *name = NULL;
33 FILE *logfile; 31 FILE *logfile;
34 32
35 name = xstrcpy((char *)"/var/local/log/"); 33 if (getenv((char *)"USER") == NULL) {
34 name = xstrcpy((char *)"/root");
35 } else {
36 name = xstrcpy(getenv((char *)"HOME"));
37 }
38 name = xstrcat(name, (char *)"/.");
36 name = xstrcat(name, progname); 39 name = xstrcat(name, progname);
37 name = xstrcat(name, (char *)"/"); 40 name = xstrcat(name, (char *)"/log/");
41 mkdirs(name, 0755);
38 name = xstrcat(name, filename); 42 name = xstrcat(name, filename);
39 43
40 gettimeofday(&now, NULL); 44 gettimeofday(&now, NULL);
41 localtime_r(&now.tv_sec, &ptm); 45 localtime_r(&now.tv_sec, &ptm);
42 outstr = calloc(10240, sizeof(char)); 46 outstr = calloc(10240, sizeof(char));
43 snprintf(outstr, 10239, "%04d-%02d-%02d %02d:%02d,%s\n", ptm.tm_year + 1900, ptm.tm_mon + 1, ptm.tm_mday, ptm.tm_hour, ptm.tm_min, data); 47 snprintf(outstr, 10239, "%04d-%02d-%02d %02d:%02d,%s\n", ptm.tm_year + 1900, ptm.tm_mon + 1, ptm.tm_mday, ptm.tm_hour, ptm.tm_min, data);
44 48
45 // if (strcmp(check, outstr)) { 49 if ((logfile = fopen(name, "a+"))) {
46 // snprintf(check, 10239, "%04d-%02d-%02d %02d:%02d,%s\n", ptm.tm_year + 1900, ptm.tm_mon + 1, ptm.tm_mday, ptm.tm_hour, ptm.tm_min, data); 50 fprintf(logfile, outstr);
47 if ((logfile = fopen(name, "a+"))) { 51 fclose(logfile);
48 fprintf(logfile, outstr); 52 } else {
49 fclose(logfile); 53 syslog(LOG_NOTICE, "logger: cannot open %s for writing", name);
50 } else { 54 }
51 syslog(LOG_NOTICE, "logger: cannot open %s for writing", name);
52 }
53 // }
54 55
55 free(outstr); 56 free(outstr);
56 outstr = NULL; 57 outstr = NULL;
57 free(name); 58 free(name);
58 name = NULL; 59 name = NULL;

mercurial