Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
sdk:log-to-syslog [2016/09/28 12:35]
fachet [The Script]
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|<​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]); 
-} 
- 
-do { 
-    l = new logger(elements);​ 
-    l.logNow(); 
-    sleep(mode);​ 
-} while(mode);​ 
-exit(0); 
 </​code>​ </​code>​