commit 461c68140704a919e0dd2e46983d24ee01a5c2a3 Author: crusader Date: Wed Aug 30 13:03:03 2017 +0900 Project has been created diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3733e36 --- /dev/null +++ b/.gitignore @@ -0,0 +1,68 @@ +# Created by .ignore support plugin (hsz.mobi) +### JetBrains template +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm +# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 + +# User-specific stuff: +.idea/**/workspace.xml +.idea/**/tasks.xml +.idea/dictionaries + +# Sensitive or high-churn files: +.idea/**/dataSources/ +.idea/**/dataSources.ids +.idea/**/dataSources.xml +.idea/**/dataSources.local.xml +.idea/**/sqlDataSources.xml +.idea/**/dynamic.xml +.idea/**/uiDesigner.xml + +# Gradle: +.idea/**/gradle.xml +.idea/**/libraries + +# Mongo Explorer plugin: +.idea/**/mongoSettings.xml + +## File-based project format: +*.iws + +## Plugin-specific files: + +# IntelliJ +/out/ + +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Crashlytics plugin (for Android Studio and IntelliJ) +com_crashlytics_export_strings.xml +crashlytics.properties +crashlytics-build.properties +fabric.properties +### Go template +# Binaries for programs and plugins +*.exe +*.dll +*.so +*.dylib + +# Test binary, build with `go test -c` +*.test + +# Output of the go coverage tool, specifically when used with LiteIDE +*.out + +# Project-local glide cache, RE: https://github.com/Masterminds/glide/issues/736 +.glide/ +.idea/ +*.iml + +vendor/ +glide.lock +.DS_Store +dist/ +debug diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..2ca2b1d --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,32 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "name": "Debug", + "type": "go", + "request": "launch", + "mode": "debug", + "remotePath": "", + "port": 2345, + "host": "127.0.0.1", + "program": "${workspaceRoot}/main.go", + "env": {}, + "args": [], + "showLog": true + }, + { + "name": "File Debug", + "type": "go", + "request": "launch", + "mode": "debug", + "remotePath": "", + "port": 2345, + "host": "127.0.0.1", + "program": "${fileDirname}", + "env": {}, + "args": [], + "showLog": true + } + + ] +} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..46c249c --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,11 @@ +// Place your settings in this file to overwrite default and user settings. +{ + // Specifies Lint tool name. + "go.lintTool": "gometalinter", + + // Flags to pass to Lint tool (e.g. ["-min_confidence=.8"]) + "go.lintFlags": [ + "--config=${workspaceRoot}/golint.json" + ] + +} \ No newline at end of file diff --git a/glide.yaml b/glide.yaml new file mode 100644 index 0000000..ee21499 --- /dev/null +++ b/glide.yaml @@ -0,0 +1,8 @@ +package: git.loafle.net/commons_go/logging +import: +- package: github.com/uber-go/zap +- package: go.uber.org/zap + version: v1.5.0 + subpackages: + - internal + - internal/bufferpool diff --git a/golint.json b/golint.json new file mode 100644 index 0000000..6380714 --- /dev/null +++ b/golint.json @@ -0,0 +1,39 @@ +{ + "DisableAll": true, + "Enable": [ + "aligncheck", + "deadcode", + "dupl", + "errcheck", + "gas", + "goconst", + "gocyclo", + "gofmt", + "goimports", + "golint", + "gotype", + "ineffassign", + "interfacer", + "lll", + "megacheck", + "misspell", + "structcheck", + "test", + "testify", + "unconvert", + "varcheck", + "vet", + "vetshadow" + ], + "Aggregate": true, + "Concurrency": 16, + "Cyclo": 60, + "Deadline": "60s", + "DuplThreshold": 50, + "EnableGC": true, + "LineLength": 120, + "MinConfidence": 0.8, + "MinOccurrences": 3, + "MinConstLength": 3, + "Sort": ["severity"] +} \ No newline at end of file diff --git a/logging.go b/logging.go new file mode 100644 index 0000000..c2032f6 --- /dev/null +++ b/logging.go @@ -0,0 +1,38 @@ +package logging + +import ( + "context" + "os" + "path" + + "github.com/uber-go/zap" +) + +type loggerKeyType int + +const loggerKey loggerKeyType = iota + +var defaultLogger zap.Logger + +func init() { + defaultLogger = zap.New( + zap.NewJSONEncoder(zap.TimeFormatter(TimestampField)), + zap.Fields(zap.Int("pid", os.Getpid())), + zap.String("exe", path.Base(os.Args[0])), + ) +} + +func NewContext(ctx context.Context, fields ...zap.Field) context.Context { + return context.WithValue(ctx, loggerKey, WithContext(ctx).With(fields...)) +} + +func WithContext(ctx context.Context) zap.Logger { + if ctx == nil { + return defaultLogger + } + if ctxLogger, ok := ctx.Value(loggerKey).(zap.Logger); ok { + return ctxLogger + } else { + return defaultLogger + } +}