-
Notifications
You must be signed in to change notification settings - Fork 171
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: add logger #68
Open
ocavue
wants to merge
3
commits into
xen0n:develop
Choose a base branch
from
ocavue:logger
base: develop
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
feat: add logger #68
Changes from 1 commit
Commits
Show all changes
3 commits
Select commit
Hold shift + click to select a range
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
package workwx | ||
|
||
import ( | ||
"log" | ||
"os" | ||
) | ||
|
||
type Logger interface { | ||
Info(msg string) | ||
Error(msg string) | ||
} | ||
|
||
type defaultLogger struct { | ||
stderr *log.Logger | ||
stdout *log.Logger | ||
} | ||
|
||
func (l *defaultLogger) Info(msg string) { | ||
l.stdout.Println(msg) | ||
} | ||
|
||
func (l *defaultLogger) Error(msg string) { | ||
l.stderr.Println(msg) | ||
} | ||
|
||
func newDefaultLogger() *defaultLogger { | ||
stderr := log.New(os.Stderr, "[workwx INFO]", 0) | ||
stdout := log.New(os.Stdout, "[workwx ERR]", 0) | ||
return &defaultLogger{stderr: stderr, stdout: stdout} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
这里我只给 Logger 设置了两个方法,目前来看似乎是足够的。但是考虑到 Go 的特点,如果我们未来向这个 interface 中添加更多方法,这就会变成 breaking change。所以我在犹豫是否需要提前添加更多方法(比如 Debug、Warning)。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
函数签名建议搞成仿照既然都是临时解决方案,想了想,只打 string 也没问题fmt.Printf
的形式,这样用起来会简单一些。There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
我们是不是可以考虑同时实现两种调用 logger 的方法:
Info
和Infof
?比如像 grpclog 这样。从方便 logger 使用者的角度考虑,有时候我们并不想要一个模版字符串作为日志结构的主体。举例来说下面这几种写法都是蛮常见的:考虑到 Go 升级一个库当中的主版本号(不包含 v0 => v1 的升级)还需要全局替换代码中的包名,我觉得我们还是最好一次把事情做好
有什么更好的建议吗?