我不知道如何在API REST上处理FileHandler
我在weblogic处安装了REST API,正在使用Java日志记录,当我的应用程序启动时,将启动记录器,然后打开FileHandler。
就像我从不关闭FileHandler一样,创建的package main
import (
"crypto/tls"
"database/sql"
"github.com/SAP/go-hdb/driver"
_ "github.com/SAP/go-hdb/driver"
"log"
)
const (
HOST = "host"
PORT = ":port"
username = "user"
PASSWORD = "password"
)
func main() {
c := driver.NewBasicAuthConnector(
HOST+PORT,username,PASSWORD)
tlsConfig := tls.Config{
InsecureSkipVerify: false,ServerName: HOST,}
c.SetTLSConfig(&tlsConfig)
db := sql.OpenDB(c)
var id int
var name string
res := db.QueryRow("SELECT * FROM SCHEMA.TABLE LIMIT 1")
res.Scan(&id,&name)
log.Println("res ",id,name)
}
文件仍位于我的日志文件夹中。我真的不在乎该文件的存在,但是当我重新部署该应用程序时,就像FileHandler仍然打开时,我的应用程序将启动一个新的日志文件(例如:.lck
,myLog.log.0
)。我已经读过JVM本身应该关闭FileHandler,但是那没有发生。
我曾尝试myLog.log.1
关闭FileHandler,但是该代码无法正常工作,如果我重新部署该应用程序,它仍然保持打开状态。
addShutodownHook
我的@ApplicationPath("api")
public class GenericApplication extends Application {
public GenericApplication() {
initSwagger();
initLog();
Runtime.getRuntime().addShutdownHook(new Thread() {
@Override
public void run() {
CtgLogger.fileJson.close();
// fileJson is my FileHandler,i made it public static to call him here.
}
});
}
方法仅调用下一个initLog()
...
CtgLogger.setup()
仅此而已,然后我只需呼叫端点并使用记录器即可。
我的问题是,每次调用端点时都应该打开和关闭FileHandler吗?还是有更好的方法呢?