2013-05-11 79 views
0

我有一个SaveRequest方法,它和http.Request然后,据说,将其保存(现在只是路径)的Postgres数据库:转到胡德保存到Postgres的,但不知道在哪里

func (logger *PostgresLogger) SaveRequest(req *http.Request) { 
    os.Stdout.Write([]byte("Saving to PGDB\n")) 
    request := db.Requests { Path: req.URL.Path } 
    transaction := logger.dbConnection.Begin() 
    Id, saveError := transaction.Save(&request) 
    if saveError != nil { 
    panic(saveError) 
    } 

    os.Stdout.Write([]byte(fmt.Sprintf("%v\n", Id))) 

    transactionError := logger.dbConnection.Commit() 
    if transactionError != nil { 
    panic(transactionError) 
    } 
} 

dbConnection来自加载Hood配置文件:

func New(prefix string) (PostgresLogger) { 
    dbConnection, err := hood.Load("/Users/ls/Dropbox/programming/go/src/postgres_logger/db/config.json", "development") 
    if err != nil { 
    panic(err) 
    } 

    return PostgresLogger{ prefix: prefix, dbConnection: dbConnection } 
} 

很酷。所以,当我开始反向代理,并要求它保存传入的请求,我看到这(样品中,其中日志由RVSPRXY前缀):

Saving to PGDB 
56 
RVSPRXY (1368315177148901322): 
[::1]:51142 GET /css/editor.css 

Saving to PGDB 
RVSPRXY (1368315177149851787): 
[::1]:51143 GET /js/handlebars.min.js 

Saving to PGDB 
RVSPRXY (1368315177150164615): 
[::1]:51140 GET /css/mercury.bundle.css 

Saving to PGDB 
RVSPRXY (1368315177150358938): 
[::1]:51141 GET /css/mercury_regions.bundle.css 

Saving to PGDB 
RVSPRXY (1368315177150776986): 
[::1]:51144 GET /js/jquery-2.0.0.min.js 

Saving to PGDB 
57 
58 
59 
60 

所以我们可以看到它递增ID从保存返回,但我查看了logging_development数据库,并没有记录。

停止并重新启动服务器会继续增加它停止的位置的ID,所以它看起来好像实际上正在保存,但在哪里?

更新

这里是开发配置:

{ 
    "development": { 
    "driver": "postgres", 
    "source": "user=logging dbname=logging_development sslmode=disable" 
    } 
} 

有些什么样的pgAdmin显示连接:

5289 logging logging_development 2013-05-11 17:54:48.700467-06 127.0.0.1:51403 INSERT INTO "requests" ("path", "created_at", "updated_at") VALUES ($1, $2, $3) RETURNING "id" 
5290 logging logging_development 2013-05-11 17:54:48.746065-06 127.0.0.1:51414 INSERT INTO "requests" ("path", "created_at", "updated_at") VALUES ($1, $2, $3) RETURNING "id" 
5291 logging logging_development 2013-05-11 17:54:48.747876-06 127.0.0.1:51415 INSERT INTO "requests" ("path", "created_at", "updated_at") VALUES ($1, $2, $3) RETURNING "id" 
5292 logging logging_development 2013-05-11 17:54:48.748086-06 127.0.0.1:51416 INSERT INTO "requests" ("path", "created_at", "updated_at") VALUES ($1, $2, $3) RETURNING "id" 
5293 logging logging_development 2013-05-11 17:54:48.74866-06  

编辑:修正了检查不正确的错误(不是问题的原因)

+0

1)应该在哪里数据根据config.json去? 2)可以使用pgadmin来检查客户端连接的数据库以及他们实际执行的查询。 – fvu 2013-05-11 23:52:04

+0

我添加了配置文件。它应该去logging_development,并且服务器的统计数据似乎表明这是事实。 – Chris 2013-05-12 00:02:41

+0

'os.Stdout.Write([] byte(“Saving to PGDB \ n”))''可以更好地用作'fmt.Println(“Saving to PGDB”)'btw – 2013-05-12 02:16:45

回答

1

您写道:

func (logger *PostgresLogger) SaveRequest(req *http.Request) { 
    os.Stdout.Write([]byte("Saving to PGDB\n")) 
    request := db.Requests{Path: req.URL.Path} 
    transaction := logger.dbConnection.Begin() 
    Id, saveError := transaction.Save(&request) 
    if saveError != nil { 
     panic(saveError) 
    } 
    os.Stdout.Write([]byte(fmt.Sprintf("%v\n", Id))) 
    transactionError := logger.dbConnection.Commit() 
    if saveError != nil { 
     panic(transactionError) 
    } 
} 

如果你写你会得到什么样的结果:

func (logger *PostgresLogger) SaveRequest(req *http.Request) { 
    os.Stdout.Write([]byte("Saving to PGDB\n")) 
    request := db.Requests{Path: req.URL.Path} 
    transaction := logger.dbConnection.Begin() 
    Id, saveError := transaction.Save(&request) 
    if saveError != nil { 
     panic(saveError) 
    } 
    os.Stdout.Write([]byte(fmt.Sprintf("%v\n", Id))) 
    // commit transaction 
    transactionError := transaction.Commit() 
    // check transactionError 
    if transactionError != nil { 
     panic(transactionError) 
    } 
} 
+0

为了避免人们玩“寻找差异”,你有什么机会可以提到你已经改变了什么,以及为什么背后的原因? – 2013-05-12 03:31:09

+1

他注意到我分配了一个transactionError,但之后检查了saveError。我注意到,并修复它,但仍然得到相同的结果:( – Chris 2013-05-12 05:28:21

+1

您是否复制并粘贴提议的代码,其中'提交'事务'并检查'transactionError'? – peterSO 2013-05-12 06:01:20