Esempio n. 1
0
    def test_d__byte(self):
        out = io.StringIO()
        log.logger.addHandler(StreamHandler(stream=out))
        log.set_level(log.Level.DEBUG)

        log.d(b'message')
        self.assertEqual(out.getvalue(), "message\n")
Esempio n. 2
0
def merge(directory: str, debug: bool):
    """
    引数に指定したディレクトリ内のファイルをマージし、日付でソートします。

    \b
    マージしたファイルは、[ディレクトリ名 + .merged.log]というファイル名で出力されます。
    utf-8でデコード出来ない行は上手くマージ出来ません。
    """
    # for debug
    if debug:
        log.set_level(log.Level.DEBUG)

    try:
        ret = mrg.Merge().exec(directory)

    except IOError as e:
        ret = False
        click.echo(e.args)
    except Exception as e:
        ret = False
        click.echo(e.args)

    # finished
    if ret:
        click.echo("正常に終了しました。")
    else:
        click.echo("失敗しました。")
Esempio n. 3
0
 def test_set_level(self):
     out = io.StringIO()
     log.logger.addHandler(StreamHandler(stream=out))
     log.set_level(log.Level.WARN)
     log.i("message")
     self.assertEqual(out.getvalue(), "")
     log.set_level(log.Level.INFO)
     log.i("message")
     self.assertEqual(out.getvalue(), "message\n")
Esempio n. 4
0
def get(ctx: click.core.Context, filename: str, dir: str, to_usb: bool, convert: bool, merge: bool, debug: bool):
    """
    引数に指定したファイルを取得します。省略した場合は新たに取得します。
    """
    # for debug
    if debug:
        log.set_level(log.Level.DEBUG)

    p = __get_params(ctx)

    if to_usb:
        if convert or merge:
            log.w("USB出力時は--convert, --mergeオプションは無視されます.")
        p.remote_dist_dir = os.path.join(p.usb_dir, dir)
    else:
        p.local_dist_dir = os.path.join(os.getcwd(), dir)

    # execute command
    files = None
    ret = True
    try:
        if filename is None:
            files = remote.RemoteLogger(p).get_log(to_usb)
        else:
            files = remote.RemoteLogger(p).move_log(filename, to_usb)

        if convert and not to_usb and files is not None:
            cp = conv.ConvertParams()
            cp.script_path = p.convert_rule
            for f in files:
                cp.log_path = f
                ret, out_dir = conv.Converter(cp).exec()
                ret &= ret
                if merge and not (out_dir is None):
                    ret &= mrg.Merge().exec(os.path.join(out_dir, p.merge_dir))

    except IOError as e:
        ret = False
        click.echo(e.args)
    except Exception as e:
        ret = False
        click.echo(e.args)

    # finished
    if not files is None and ret:
        click.echo("正常に終了しました。")
    else:
        click.echo("失敗しました。")
Esempio n. 5
0
def ls(ctx: click.core.Context, debug: bool):
    """
    Remoteに保存されたログファイルの一覧を取得します。
    """
    if debug:
        log.set_level(log.Level.DEBUG)
    else:
        log.set_level(log.Level.WARN)

    p = __get_params(ctx)

    try:
        for f in remote.RemoteLogger(p).list_log():
            click.echo(f)

    except IOError as e:
        click.echo(e.args)
    except Exception as e:
        click.echo(e.args)
Esempio n. 6
0
def convert(ctx: click.core.Context, tar_file: str, script_path: str, file: str, merge: bool, debug: bool):
    """
    指定されたtarファイルを展開し、変換ルールに従って変換します。
    """
    if debug:
        log.set_level(log.Level.DEBUG)

    if not script_path is None:
        s = script_path
    else:
        conf = __get_params(ctx)
        if (conf.convert_rule is not None) and (not os.path.exists(conf.convert_rule)):
            click.echo("convert_rule \"%s\" が存在しません。" % conf.convert_rule)
            ctx.exit(2)
        else:
            s = conf.convert_rule

    p = conv.ConvertParams()
    p.script_path = s
    p.log_path = tar_file
    p.file = file

    ret = None
    try:
        ret, out_dir = conv.Converter(p).exec()
        if merge and not (out_dir is None):
            ret = mrg.Merge().exec(os.path.join(out_dir, conf.merge_dir))

    except IOError as e:
        click.echo(e.args)
    except Exception as e:
        click.echo(e.args)

    # finished
    if ret:
        click.echo("正常に終了しました。")
    else:
        click.echo("失敗しました。")
Esempio n. 7
0
def clear(ctx: click.core.Context, buffer: str, debug: bool):
    """
    Remoteに保存されたログファイルをすべて削除します。

    \b
    ※注意: 削除時の確認はしません。削除したファイルの復元はできません。
    """
    if debug:
        log.set_level(log.Level.DEBUG)
    else:
        log.set_level(log.Level.WARN)

    p = __get_params(ctx)

    try:
        remote.RemoteLogger(p).clear_log(buffer)

    except IOError as e:
        click.echo(e.args)
    except Exception as e:
        click.echo(e.args)

    click.echo("%s のログを削除しました。" % p.remote_log_dir)
Esempio n. 8
0
def start(ctx: click.core.Context, test_number: str, debug: bool) -> object:
    """
    コンソール操作ログを含む、ログの取得を開始します。

    \b
    試験番号毎のディレクトリを作成し、その中にログを保存します。
    ログ取得を終了するには、 exit を2回入力してください。
    """
    # for debug
    if debug:
        log.set_level(log.Level.DEBUG)

    # check parameters.
    if test_number is None:
        return click.echo("Error: test-number を設定してください。")

    p = __get_params(ctx)

    # execute command
    click.echo("ログ取得を開始します。終了するには exit を2回入力してください。")
    logger = auto.AutoLogger(p, test_number)
    ret = False
    try:
        ret = logger.start()
    except IOError as e:
        ret = False
        click.echo(e.args)
    except Exception as e:
        ret = False
        click.echo(e.args)

    # finished
    if ret:
        click.echo("正常に終了しました。")
    else:
        click.echo("失敗しました。")
Esempio n. 9
0
from flask import Flask
from flask import request
from flask import jsonify
from flask_cors import CORS
from invalid_usage import input_check, InvalidUsage
from work_mailer import WorkMailer
from format_mailer import FormatMailer
from simplebot import SimpleBot
from logger import log
from flask import render_template
from settings import Settings

app = Flask(__name__, static_url_path="/static")
CORS(app)
log.set_level(log.DEBUG)
log(log.DEBUG, "start server")


@app.errorhandler(InvalidUsage)
def handle_invalid_usage(error):
    response = jsonify(error.to_dict())
    response.status_code = error.status_code
    return response


@app.route("/")
def index():
    return render_template("index.html")


@app.route("/send_message", methods=["POST"])
Esempio n. 10
0
 def test_exec__dir_not_exists(self):
     path = "tests/not_exists_dir"
     log.set_level(log.Level.DEBUG)
     ret = merge.Merge().exec(path)
     self.assertFalse(ret)