Giter Club home page Giter Club logo

gone's People

Contributors

proidiot avatar waffle-iron avatar

Stargazers

 avatar

Watchers

 avatar  avatar

Forkers

waffle-iron

gone's Issues

Create log coverage tool

It would be nice to have a log coverage tool that will indicate whether all paths in a piece of code actually write logs. It might need to be specific to this particular codebase at least at first, but that should be fine.

Add badges

Add badges for Travis, Coveralls, Godoc, and Waffle.

Add error constant support

There doesn't appear to be a nice way of creating error constants even though it seems to be rather easy to do so. You can create package-level error variables, but the C programmer in me is uncomfortable with the blatant lack of const-correctness in this setup.

Add log package

As with so many languages of late, Go seems to have created a pretty awful looking logging system in an effort to "improve" on the (admittedly imperfect) syslog approach. It seems as though people cannot resist creating absurdly complex minimum log setup requirements in a misguided effort to get the finer administrative details of log delivery out of the hands of systems administrators and into the hands of developers, even if they must abandon all hope of using an intelligible abstraction in order to do so. Furthermore, Go (as with so many other languages) have seen fit to abandon the standard syslog levels in favor of yet another combination of log levels unique in the entire world of logging, and not exactly fitting anyone's use case except the small number of people who were locked in the room where this half-baked decision was made.

There are many faults with syslog, but its practical advantages are unmatched. It has sane defaults that allow developers to start developing without worrying about matters that are strictly in the realm of systems administration anyway. It has well known and fairly well understood log levels that do indeed make a lot of sense (even if some developers are bothered by the fact that they've never written code which could conceivably justify the use of some of these log levels). The log format is the one and only format that is understood by every other log aggregation system in existence, and this fact is even more jarring when you consider that no other format is supported by even half as many log aggregation and analysis systems. Further, just about the only log system that is simpler to use is basic writing to stderr.

Unfortunately it seems that Go's implementation of the syslog client calls are not as clever or as graceful in the face of failures as C's syslog calls. It would be nice to have a variant of the syslog calls which are global by default in much the same way as in C, and will not necessarily fail in the event that the syslog daemon is not running, but will instead only write to stderr if that is what was requested at runtime (say, via environment variables). The details of where logs go, what level of logging we save, whether or not we want just stderr or just syslog daemon or both or either depending on which is available should all be controlled at runtime by an administrator, and the developer need only make calls to the subsystem as though writing to stdout or stderr directly.

No examples

Golang examples should be added for everything.

Check for gofmt doesn't exclude unstaged

The script which checks every file against gofmt -s runs against all files and not just the relevant ones. For its initial use within Travis Ci, this is fine, but the same script couldn't necessarily be used as a pre-commit hook for local development, but there's no reason it couldn't be modified for use in this context.

LOG_PERROR doesn't match common newline behavior

LOG_PERROR is a very common non-POSIX option among syslog implementations,
and the default behavior (at least in Linux, and likely in others) is to
append a newline (a literal byte 0x0a) iff that is not already the last
byte of the message. However, this implementation does not currently have that
behavior.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.