Have questions? Stuck? Please check our FAQ for some common questions and answers.

Different users expressed the exigence to log (specially in production environments) to external syslog servers.

By deafult, ONOS uses the log4j library to provide its logging functionality. Change its standard behavior is pretty easy: the user needs only to add an additional appender (a syslog appender) to a specific configuration file, which will overwrite the standard one provide with ONOS.

In this little howto it's assumed the following:

  • A syslog server is configured and running, and it can accept connections from the ONOS server.
  • ONOS has just been cloned from the ONOS repository and we're in the main onos directory (i.e. ~/onos).

Please, follow the steps below:

  • Copy the default configuration file of log4j (provided with ONOS) inside the proper config folder

    $ cp ~/onos/tools/package/etc/org.ops4j.pax.logging.cfg ~/onos/tools/package/config/org.ops4j.pax.logging.cfg
  • Edit the configuration file with the editor you prefer and modify it accordingly

    #
    #       http://www.apache.org/licenses/LICENSE-2.0
    #
    #    Unless required by applicable law or agreed to in writing, software
    #    distributed under the License is distributed on an "AS IS" BASIS,
    #    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    #    See the License for the specific language governing permissions and
    #    limitations under the License.
    #
    ################################################################################
    
    # Root logger
    log4j.rootLogger=INFO, out, syslog, osgi:*
    log4j.throwableRenderer=org.apache.log4j.OsgiThrowableRenderer
    
    # CONSOLE appender not used by default
    log4j.appender.stdout=org.apache.log4j.ConsoleAppender
    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
    log4j.appender.stdout.layout.ConversionPattern=%d{ISO8601} | %-5.5p | %-16.16t | %-32.32c{1} | %X{bundle.id} - %X{bundle.name} - %X{bundle.version} | %m%n
    
    # Syslog appender
    log4j.appender.syslog=org.apache.log4j.net.SyslogAppender
    log4j.appender.syslog.layout=org.apache.log4j.PatternLayout
    log4j.appender.syslog.layout.ConversionPattern=%d{ISO8601} | %-5.5p | %-16.16t | %-32.32c{1} | %X{bundle.id} - %X{bundle.name} - %X{bundle.version} | %m%n
    log4j.appender.syslog.syslogHost=IP-OF-SYSLOG-SERVER
    log4J.appender.syslog.facility=KARAF
    log4j.appender.syslog.facilityPrinting=false
    
    # File appender
    log4j.appender.out=org.apache.log4j.RollingFileAppender
    log4j.appender.out.layout=org.apache.log4j.PatternLayout
    log4j.appender.out.layout.ConversionPattern=%d{ISO8601} | %-5.5p | %-16.16t | %-32.32c{1} | %X{bundle.id} - %X{bundle.name} - %X{bundle.version} | %m%n
    log4j.appender.out.file=${karaf.data}/log/karaf.log
    log4j.appender.out.append=true
    log4j.appender.out.maxFileSize=1MB
    log4j.appender.out.maxBackupIndex=10
    
    # Sift appender
    log4j.appender.sift=org.apache.log4j.sift.MDCSiftingAppender
    log4j.appender.sift.key=bundle.name
    log4j.appender.sift.default=karaf
    log4j.appender.sift.appender=org.apache.log4j.FileAppender
    log4j.appender.sift.appender.layout=org.apache.log4j.PatternLayout
    log4j.appender.sift.appender.layout.ConversionPattern=%d{ISO8601} | %-5.5p | %-16.16t | %-32.32c{1} | %m%n
    log4j.appender.sift.appender.file=${karaf.data}/log/$\\{bundle.name\\}.log
    log4j.appender.sift.appender.append=true
  • Reconfigure the target ONOS nodes / deploy ONOS, as described in the users guide on the wiki.

     

  • No labels