예제 #1
0
def set_logger(log_folder=None, log_name="uplink.log"):
    """
    Set the module level logger.
    @param log_folder: uplink log folder
    @param log_name: uplink log name (default="uplink.log")
    """
    global LOGGER

    if log_folder is None or log_folder == 'None':
        f = None
    else:
        f = os.path.join(log_folder, log_name)

    LOGGER = Logger.connectOutputLogger(file=f,
                                        logger_name=LOGGER_NAME,
                                        logger_level=logging.INFO)
예제 #2
0
    def setupCsvLogging(self, opt=None):
        """
        Set up CSV logging once for the singleton to use.
        """

        if opt == None:
            p = os.environ['HOME'] + os.sep + 'logs' + os.sep + "channel"
        else:
            p = opt.log_file_path + os.sep + opt.log_file_prefix + os.sep + "channel"
        #
        logfile = 'CsvChannel.log'

        #
        if not os.path.exists(p):
            os.makedirs(p)
        f = p + os.sep + logfile
        self.__csv_logger = Logger.connectOutputLogger(f, 'csv_channel')
예제 #3
0
    def setupLogging(self, opt=None):
        """
        Set up logging once for the singleton to use.
        """

        if opt == None:
            p = os.environ['HOME'] + os.sep + 'logs' + os.sep + "status"
        else:
            p = opt.log_file_path + os.sep + opt.log_file_prefix + os.sep + "status"
        #
        self.__opt = opt
        logfile = 'Status.log'
        #
        if not os.path.exists(p):
            os.makedirs(p)
        f = p + os.sep + logfile
        self.__logger = Logger.connectOutputLogger(f)
        self.__logger.info("Created log: %s" % f)
        self.__logger.info("User: %s" % os.environ['USER'])
예제 #4
0
파일: gse_api.py 프로젝트: zchoffma/fprime
    def __init__(self,
                 server_addr='127.0.0.1',
                 port=50000,
                 generated_path='',
                 packet_spec_path='',
                 build_root='',
                 log_file_cmds=None,
                 log_file_events=None,
                 log_file_channel=None,
                 log_file_path=None,
                 log_file_updown=None,
                 listener_enabled=False,
                 verbose=False,
                 quiet=False):
        """
        Constructor.
        @param server_addr: Socket server addr
        @param port: Socket server port number
        @param packet_spec_path: path to packet definition XML
        @param log_file_cmds: Name of command log file
        @param log_file_events: Name of log event log file
        @param log_file_channel: Name of channel telemetry log file
        @param log_file_path: Name of common directory path to save log files into
        @param listener_enabled: If True then event/channel telemetry listener thread enabled, else dissabled
        @param verbose: Enable diagonistic display of information
        """
        # 1. Connect to socket server using controllers.client_sock.py
        # 2. Create log files and loggers
        # 3. Load configuration for commands, events, channels, using controllers.XXXXX_loader.py
        # 3. Start listener thread controllers.event_listern.py
        self.quiet = quiet
        # For every console output log to a default file and stdout.
        logfile = time.strftime("%y-%m-%d-%H-%M-%S",
                                time.gmtime()) + '_GSEStdOut.log'
        #p = opts.log_file_path + os.sep + "stdout"
        p = '.' + os.sep + "stdout"
        if not os.path.exists(p):
            os.makedirs(p)
        f = p + os.sep + logfile

        # setup default for generated python command / telemetry descriptor files.
        # these are autocoded descriptions of all.

        config = ConfigManager.getInstance()
        self.print_msg("Searching for standard configuration")
        #Updated unified configuration settings
        self.build_root = self.get_configured_setting(build_root, config,
                                                      "filepaths",
                                                      "build_root")
        self.generated_path = self.get_configured_setting(
            generated_path, config, "filepaths", "generated_path")
        #Packet spec path not strictly required, thus removing it
        try:
            self.packet_spec_path = self.get_configured_setting(
                packet_spec_path, config, "filepaths", "packet_path")
        except NoOptionError:
            self.packet_spec_path = None
        # display configuration before starting GUI here...
        sep_line = 80 * "="
        if verbose:
            logger = Logger.connectOutputLogger(f, 'stdout', logging.INFO)
        else:
            logger = Logger.connectOutputLogger(f, 'stdout', logging.WARNING)
        logger.info("Created log: %s" % f)
        logger.info("User: %s" % os.environ['USER'])
        (sysname, nodename, release, version, machine) = os.uname()
        logger.info("OS Name: %s" % sysname)
        logger.info("Machine Network Host Name: %s" % nodename)
        logger.info("Release: %s" % release)
        logger.info("Version: %s" % version)
        logger.info("Machine: %s" % machine)
        logger.info(sep_line)

        # load commands, events, channelized telemetry, and event listener
        sys.path.append(generated_path)
        # add path for serializables
        sys.path.append(generated_path + os.sep + "serializable")

        self._cmds = command_loader.CommandLoader.getInstance()
        self._cmds.create(generated_path + os.sep + "commands")
        self._events = event_loader.EventLoader.getInstance()
        self._events.create(generated_path + os.sep + "events")
        self._channels = channel_loader.ChannelLoader.getInstance()
        self._channels.create(generated_path + os.sep + "channels")
        if not self.packet_spec_path is None and self.packet_spec_path != "":
            self._pkt_channels = packetize_channel_loader.PacketizeChannelLoader.getInstance(
            )
            self._pkt_channels.create(self.packet_spec_path)
        self._ev_listener = event_listener.EventListener.getInstance()
        self._ev_listener.setupLogging()
        self._ch_listener = channel_listener.ChannelListener.getInstance()
        self._ch_listener.setupLogging()
        self._pk_listener = packetize_channel_listener.PacketizeChannelListener.getInstance(
        )
        #self._pk_listener.setupLogging()
        self.__sock_listener = socket_listener.SocketListener.getInstance()
        self.__logger = logger

        self.__server_addr = server_addr
        self.__port = port

        # Uplink and downlink clients will log to null handler if none is specified
        file_uplink_client.set_logger(log_folder=log_file_updown)
        file_downlink_client.set_logger(log_folder=log_file_updown)

        # connect to TCP server
        try:
            self.__sock = client_sock.ClientSocket(server_addr, port)
            self.__sock.send("Register GUI\n")
            self.__sock_listener.connect(self.__sock)
        except IOError:
            self.__sock = None

        super(GseApi, self).__init__()
예제 #5
0
파일: gse.py 프로젝트: zchoffma/fprime
def main(argv=None):
    '''
    Command line options.
    '''
    global LOGGER
    #
    program_name = os.path.basename(sys.argv[0])
    program_version = "v0.1"
    program_build_date = "%s" % __updated__

    program_version_string = '%%prog %s (%s)' % (program_version, program_build_date)
    #program_usage = '''usage: spam two eggs''' # optional - will be autogenerated by optparse
    program_longdesc = '''''' # optional - give further explanation about what the program does
    program_license = "Copyright 2015 user_name (California Institute of Technology)                                            \
                ALL RIGHTS RESERVED. U.S. Government Sponsorship acknowledged."




    if argv is None:
        argv = sys.argv[1:]
    try:

        # Get ConfigManager
        config_manager = ConfigManager.ConfigManager.getInstance()
        # Set default values
        generated_path = config_manager.get("filepaths", "generated_path")
        log_file_path  = config_manager.get("filepaths", "log_file_path")

        fsw_app = None

        #
        # setup option parser
        parser = OptionParser(version=program_version_string, epilog=program_longdesc, description=program_license)
        parser.add_option("-d", "--dictionary", dest="generated_path", action="store", type="string", \
                          help="Set base path to generated command/telemetry definition files [default: %default]", \
                          default=generated_path)
        parser.add_option("-a", "--addr", dest="addr", action="store", type="string", help="set threaded tcp socket server address [default: %default]", \
                          default="127.0.0.1")
        parser.add_option("-c", "--connect", action="store_true", dest="connect", help="Launches the Threaded TCP Socket Server on startup and connect to it [default: %default]", \
                          default=False)
        parser.add_option("-p", "--port", dest="port", action="store", type="int", help="Set threaded tcp socket server port [default: %default]", \
                          #default=50007)
                          #default=PortFinder.old_getport(50000,[]))
                          )
        parser.add_option("-s", "--stream_port", dest="stream_port", action="store", type="int", help="Set streaming socket server port [default: %default]", \
                          #default=50007)
                          #default=PortFinder.old_getport(50000,[]))
                          )
        parser.add_option("-e", "--execute", dest="exec_app", action="store", type="string", help="Execute the specified fsw application after socket server and UI are up [default: %default]", \
                          default=fsw_app)
        parser.add_option("-L", "--log-file-path", dest="log_file_path", action="store", type="string", help="Path to log files [default: %default]", \
                          default=log_file_path)
        parser.add_option("-b", "--logbinary", dest="bin_logger_flag", action="store", type="int", help="Flag to log raw data from socket (1=ON, 0=OFF) [default: %default]", \
                          default=Logger.BIN_LOGGER_FLAG)
        parser.add_option("-r", "--log-file-prefix", dest="log_file_prefix", action="store", type="string", help="Prefix in log file path for each run. [default: current date/time]", \
                          default=None)
        parser.add_option("-l", "--log-time", dest="log_time", action="store", type="string", help="Time used for logging. (local, GMT)", \
                          default="local")
        parser.add_option("-n", "--no-about", dest="no_about", action="store_true", help="Do not show about text screen on start", \
                          default=True)
        parser.add_option("-t", "--title", dest="title", action="store",type="string", help="Set GUI title", default="Fprime")

        parser.add_option("-x", "--packetspec", dest="packetspec", action="store",type="string", help="Path to packet specification file", default=None)


        #parser.add_option("-v", "--verbose", dest="verbose", action="count", help="set verbosity level [default: %default]")

        # process options
        (opts, args) = parser.parse_args(argv)
        #
        # Launch the Threaded TCP Server here...

        # check for gm time in options
        if not (opts.log_time == "GMT" or opts.log_time == "local"):
            raise Exception("-l,--log-time must be \"local\" or \"GMT\"")
        if opts.log_time == "GMT" and opts.log_file_prefix == None:
            opts.log_file_prefix = time.strftime("%Y-%m-%d_%H-%M-%S",time.gmtime())
        elif opts.log_time == "local" and opts.log_file_prefix == None:
            opts.log_file_prefix = time.strftime("%Y-%m-%d_%H-%M-%S",time.localtime())

        # Make sure dictionary directory exists
        print "Generated path %s"%opts.generated_path
        if not os.path.exists(opts.generated_path):
            sys.stderr.write("Error: dictionary directory %s does not exist."%opts.generated_path)
            sys.exit(-1)

        #
        if opts.connect == True or opts.exec_app != None:
            connect(opts)
            opts.connect = True

        # set the binary logger flag
        Logger.setBinLoggerFlag(opts.bin_logger_flag)

        # make the

        #
        # For every console output log to a default file and stdout.
        #
        logfile = 'StdOut.log'
        p = opts.log_file_path + os.sep + opts.log_file_prefix + os.sep + "stdout"
        if not os.path.exists(p):
            os.makedirs(p)
        f = p + os.sep + "stdout.log"
        #
        # display configuration before starting GUI here...
        #
        sep_line = 80*"="
        logger = Logger.connectOutputLogger(f,'stdout')
        logger.info("Created log: %s" % f)
        logger.info("User: %s" % os.environ['USER'])
        (sysname, nodename, release, version, machine) = os.uname()
        logger.info("OS Name: %s" % sysname)
        logger.info("Machine Network Host Name: %s" % nodename)
        logger.info("Release: %s" % release)
        logger.info("Version: %s" % version)
        logger.info("Machine: %s" % machine)
        #
        logger.info(sep_line)
        logger.info("Generated command/telemetry definition files: %s" % opts.generated_path)
        logger.info("Threaded TCP Socket Server Address: %s" % opts.addr)
        logger.info("Connection and starting Threaded TCP Socket Server: %s" % opts.connect)
        logger.info("Threaded TCP Socket Server Port: %s" % opts.port)
        logger.info("Execution of FSW Binary Application: %s" % opts.exec_app)
        logger.info("Path to log files: %s" % opts.log_file_path)
        logger.info(sep_line)
        LOGGER = logger
        #
        # MAIN BODY #
        root = main_window_start(opts)
        root.geometry("900x800+10+10")
        #
        # Launch an FSW applicaiton but only after the gse.py is ready.
        #
        if opts.exec_app != None:
            root.after(1000, execute, opts)
        root.mainloop()

    except fprime_gds.tkgui.controllers.exceptions.GseControllerException, e:
        sys.stderr.write("Exception: %s\n"%e.getMsg())
        traceback.print_exc()
        return 2