小编Flo*_*aja的帖子

如何将Golang登录到具有日志轮换的文件?

我正在尝试编写一个将在远程服务器上运行的Web应用程序.我需要记录以捕获错误/调试/审计.我发现golang有多个日志包可用,包括标准的"log"包.但是,我需要满足三个要求:

  1. 需要旋转日志文件
  2. 它适用于使用"log"的包含的包
  3. 它需要跨平台.开发环境是Linux,需要在Windows上部署.

logging go

15
推荐指数
4
解决办法
3万
查看次数

如何处理数据库中的nil返回值?

我正在编写一个基本程序来读取数据库表中的值并在表中打印.该表由一个古老的程序填充.行中的某些字段是可选的,当我尝试将它们作为字符串读取时,我收到以下错误:

panic: sql: Scan error on column index 2: unsupported driver -> Scan pair: <nil> -> *string
Run Code Online (Sandbox Code Playgroud)

在我阅读了类似问题的其他问题之后,我想出了以下代码来处理nil值.该方法在实践中工作正常.我以纯文本和空字符串而不是nil值获取值.

但是,我有两个问题:

  1. 这看起来效率不高.我需要处理25个这样的字段,这意味着我将每个字段作为字节读取并转换为字符串.函数调用和转换太多.两个结构来处理数据等等......
  2. 代码看起来很难看.它已经看起来很复杂的2个领域,并且变得不可读,因为我去了25+

我做错了吗?是否有更好/更清洁/高效/惯用的golang方式从数据库中读取值?

我发现很难相信像Go这样的现代语言不会优雅地处理数据库.

提前致谢!

代码段:

// DB read format
type udInfoBytes struct {
  id                     []byte
  state                  []byte
}

// output format
type udInfo struct {
  id                     string
  state                  string
}

func CToGoString(c []byte) string {
  n := -1
  for i, b := range c {
    if b == 0 {
      break
    }
    n = i
  }
  return string(c[:n+1])
}

func …
Run Code Online (Sandbox Code Playgroud)

database go

10
推荐指数
2
解决办法
1万
查看次数

为什么文件权限在Python和bash中显示不同?

来自Python:

>>> import os
>>> s = os.stat( '/etc/termcap')
>>> print( oct(s.st_mode) )
**0o100444**
Run Code Online (Sandbox Code Playgroud)

当我查看Bash时:

$ stat -f "%p %N" /etc/termcap
**120755** /etc/termcap
Run Code Online (Sandbox Code Playgroud)

为什么这会返回不同的结果?

python bash shell command-line stat

9
推荐指数
1
解决办法
174
查看次数

如何将查询记录到数据库驱动程序?

我正在尝试用 go 编写一个简单的数据库应用程序,它访问多个数据服务器,一些 MySQL、MSSQL 和 SqlLite3。我正在使用“database/sql”包来访问它们。

db, err := sql.Open(driver, dataSourceName)
result, err := db.Exec(
    "INSERT INTO users (name, age) VALUES (?, ?)",
    "gopher",
    27,
)
Run Code Online (Sandbox Code Playgroud)

我需要将 SQL 查询记录到各个服务器以进行调试和审核。我怎样才能做到这一点?

sql database logging go

8
推荐指数
1
解决办法
2万
查看次数

标签 统计

go ×3

database ×2

logging ×2

bash ×1

command-line ×1

python ×1

shell ×1

sql ×1

stat ×1