well

Go framework for well-behaving commands

  • 所有者: cybozu-go/well
  • 平台:
  • 許可證: MIT License
  • 分類:
  • 主題:
  • 喜歡:
    0
      比較:

Github星跟蹤圖

GitHub release
GoDoc
CircleCI
Go Report Card

Go Command Framework

This is a framework to create well-behaving commands.

Features

Requirements

Go 1.11 or later, though the code is expected to work with Go 1.7.

Specifications

Commands using this framework implement these external specifications:

Command-line options

  • -logfile FILE

    Output logs to FILE instead of standard error.

  • -loglevel LEVEL

    Change logging threshold to LEVEL. Default is info.
    LEVEL is one of critical, error, warning, info, or debug.

  • -logformat FORMAT

    Change log formatter. Default is plain.
    FORMAT is one of plain, logfmt, or json.

Signal Handlers

  • SIGUSR1

    If -logfile is specified, this signal make the program reopen
    the log file to cooperate with an external log rotation program.

    On Windows, this is not implemented.

  • SIGINT and SIGTERM

    These signals cancel the context of the global environment,
    and hence goroutines registered with the environment. Usually
    this will result in graceful stop of network servers, if any.

    On Windows, only SIGINT is handled.

  • SIGHUP

    This signal is used to restart network servers gracefully.
    Internally, the main (master) process restarts its child process.
    The PID of the master process thus will not change.

    There is one limitation: the location of log file cannot be changed
    by graceful restart. To change log file location, the server need
    to be (gracefully) stopped and started.

    On Windows, this is not implemented.

  • SIGPIPE

    The framework changes the way Go handles SIGPIPE slightly.
    If a program using this framework receives SIGPIPE when writing to stdout or stderr, the program exits with status code 2.
    See #15 for details.

Environment variables

  • REQUEST_ID_HEADER

    The value of this variable is used as HTTP header name.
    The HTTP header is used to track activities across services.
    The default header name is "X-Cybozu-Request-ID".

  • CYBOZU_LISTEN_FDS

    This is used internally for graceful restart.

Usage

Read Tutorial, the design notes and godoc.

A wiki page for cobra users is also available.

Real world examples

Pull requests are welcome to add your project to this list!

License

MIT

主要指標

概覽
名稱與所有者cybozu-go/well
主編程語言Go
編程語言Go (語言數: 1)
平台
許可證MIT License
所有者活动
創建於2016-08-04 07:21:30
推送於2023-03-31 07:16:13
最后一次提交
發布數18
最新版本名稱v1.11.2 (發布於 2023-02-02 01:10:49)
第一版名稱v1.0.0 (發布於 )
用户参与
星數126
關注者數21
派生數14
提交數173
已啟用問題?
問題數12
打開的問題數0
拉請求數30
打開的拉請求數0
關閉的拉請求數5
项目设置
已啟用Wiki?
已存檔?
是復刻?
已鎖定?
是鏡像?
是私有?