This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
sdk:log-to-syslog [2016/09/28 12:11] juraschek [Script Summary] |
sdk:log-to-syslog [2016/10/05 15:36] (current) juraschek [The Script] nicer line break without value break |
||
---|---|---|---|
Line 39: | Line 39: | ||
===== Check if the script is running ===== | ===== Check if the script is running ===== | ||
- | In the Systemlog under System->Troubleshooting->Network Debugging-> System Debugging [[http://simulator.netmodule.com/logs.php.html|System->Troubleshooting->Network Debugging-> System Debugging]] | + | In the Systemlog under [[http://simulator.netmodule.com/logs.php.html|System->Troubleshooting->Network Debugging-> System Debugging]] |
you will find the log output: | you will find the log output: | ||
Line 61: | Line 61: | ||
| | ||
| | ||
- | <code c stus-to-syslog.are> | + | <code c status-to-syslog.are> |
- | /* DESC: A Script that can be used for a longtime logging of a NetModule Wireless Router. | + | /* DESC: A Script that can be used for a longtime logging of a NetModule Wireless Router. |
- | * The upper part of the script is the logger template. The lower part is the real programm, where you describe the settings and workflow. | + | * The upper part of the script is the logger template. The lower part is the real programm, where you describe the settings and workflow. |
- | * Copyright (C) 2016 NetModule AG, Switzerland | + | * Copyright (C) 2016 NetModule AG, Switzerland |
- | */ | + | */ |
- | + | | |
- | template logger | + | |
- | { | + | template logger |
- | + | { | |
- | # give the constructor the array of fields to log | + | |
- | void logger(array logfields) { | + | # give the constructor the array of fields to log |
- | this.fields = logfields; | + | void logger(array logfields) { |
- | } | + | this.fields = logfields; |
- | + | ||
- | int logNow(){ | + | |
- | //get current status output | + | |
- | sections = mkarray("system", "wan", "wwan", "wlan", "gnss", "lan", "openvpn", "ipsec", "dio", "license"); | + | |
- | status = mkstruct(); | + | |
- | for(i = 0; i < length(sections); i++) { | + | |
- | status=struct_merge(status, nb_status(sections[i])); | + | |
} | } | ||
+ | |||
+ | int logNow(){ | ||
+ | MAX_LINE_LEN=180; | ||
+ | //get current status output | ||
+ | sections = mkarray("system", "wan", "wwan", "wlan", "gnss", "lan", "openvpn", "ipsec", "dio", "license"); | ||
+ | status = mkstruct(); | ||
+ | for(i = 0; i < length(sections); i++) { | ||
+ | status=struct_merge(status, nb_status(sections[i])); | ||
+ | } | ||
+ | |||
+ | line = ""; | ||
| | ||
- | line = ""; | + | for(i = 0; i < length(this.fields); i++) { |
- | for(i = 0; i < length(this.fields); i++) { | + | if(strlen(this.fields[i]) > 0 ) { |
- | if(strlen(this.fields[i]) > 0 ) { | + | value = struct_get(status, this.fields[i]); |
- | value = struct_get(status, this.fields[i]); | + | if(strlen(value) == 0) { |
- | if(strlen(value) == 0) { | + | value = sprintf("%s unknown", this.fields[i]); |
- | value = sprintf("%s unknown", this.fields[i]); | + | } |
+ | |||
+ | if(strlen(this.fields[i+1]) > 0 ) { | ||
+ | nextvalue = struct_get(status, this.fields[i+1]); | ||
+ | if(strlen(nextvalue) == 0) { | ||
+ | nextvalue = sprintf("%s unknown", this.fields[i+1]); | ||
+ | } | ||
+ | } | ||
+ | |||
+ | //line = sprintf('%s%s;', line,value); | ||
+ | line = sprintf("%s%s:%s## ", line, this.fields[i], value); | ||
+ | if (strlen(line)+strlen(sprintf("%s:%s##",this.fields[i+i],nextvalue))>MAX_LINE_LEN) { | ||
+ | nb_syslog(line); | ||
+ | line=""; | ||
+ | } | ||
+ | | ||
} | } | ||
- | //line = sprintf('%s%s;', line,value); | ||
- | line = sprintf("%s%s:%s## ", line, this.fields[i], value); | ||
} | } | ||
+ | if (strlen(line) > 0) nb_syslog(line); | ||
+ | |||
+ | return 0; | ||
} | } | ||
- | nb_syslog("%s", line); | + | |
- | return 0; | + | |
+ | } // of template logger | ||
+ | |||
+ | if (argc < 3){ | ||
+ | printf("usage: status_to_syslog.are [single|<1-n seconds>] <list of parameter>"); | ||
+ | exit(1); | ||
} | } | ||
+ | |||
+ | if (argv[1] == "single") | ||
+ | mode = 0; | ||
+ | else | ||
+ | mode = (int) argv[1]; | ||
+ | |||
+ | elements = mkarray(); | ||
+ | for (i = 2; i <= argc; i++) { | ||
+ | elements = array_merge(elements, argv[i]); | ||
+ | } | ||
+ | l = new logger(elements); | ||
+ | |||
+ | do { | ||
+ | l.logNow(); | ||
+ | sleep(mode); | ||
+ | } while(mode); | ||
+ | exit(0); | ||
- | } // of template logger | ||
- | if (argc < 2){ | ||
- | printf("usage: status_to_syslog.are [single|endless] <list of parameter>"); | ||
- | exit(1); | ||
- | } | ||
- | mode = argv[1]; | ||
- | elements = mkarray(); | ||
- | for (i = 2; i <= argc; i++) { | ||
- | elements = array_merge(elements, argv[i]); | ||
- | } | ||
- | |||
- | do { | ||
- | l = new logger(elements); | ||
- | l.logNow(); | ||
- | sleep((int)mode); | ||
- | } while (mode != "single"); | ||
- | exit(0); | ||
</code> | </code> | ||