public bool init(int argc, string[] argv)
    {
        if (!config.init(argc, argv))
        {
            return(false);
        }

        logger.setMaxLevel((Logging.Level)config.serviceConfig.logLevel);
        logger.setPattern("%D %T %L ");
        logger.addLogger(consoleLogger);

        Logging.LoggerRef log = new Logging.LoggerRef(logger.functorMethod, "main");

        if (!string.IsNullOrEmpty(config.serviceConfig.serverRoot))
        {
            GlobalMembers.changeDirectory(config.serviceConfig.serverRoot);
            Math.Log(Logging.Level.INFO) << "Current working directory now is " << config.serviceConfig.serverRoot;
        }

        fileStream.open(config.serviceConfig.logFile, std::ofstream.app);

        if (fileStream == null)
        {
            throw new System.Exception("Couldn't open log file");
        }

        fileLogger.attachToStream(fileStream);
        logger.addLogger(fileLogger);

        return(true);
    }