mirror of
https://github.com/logos-storage/logos-storage-nim.git
synced 2026-02-25 07:53:19 +00:00
Use updateLogLevel with gcsafe pragma
This commit is contained in:
parent
f2db1c40b5
commit
0d21a16908
@ -105,6 +105,10 @@ package main
|
||||
static int cGoCodexUploadFile(void* codexCtx, char* sessionId, void* resp) {
|
||||
return codex_upload_file(codexCtx, sessionId, (CodexCallback) callback, resp);
|
||||
}
|
||||
|
||||
static int cGoCodexLogLevel(void* codexCtx, char* logLevel, void* resp) {
|
||||
return codex_log_level(codexCtx, logLevel, (CodexCallback) callback, resp);
|
||||
}
|
||||
*/
|
||||
import "C"
|
||||
import (
|
||||
@ -122,18 +126,6 @@ import (
|
||||
"unsafe"
|
||||
)
|
||||
|
||||
type LogLevel string
|
||||
|
||||
const (
|
||||
TRACE LogLevel = "trace"
|
||||
DEBUG LogLevel = "debug"
|
||||
INFO LogLevel = "info"
|
||||
NOTICE LogLevel = "notice"
|
||||
WARN LogLevel = "warn"
|
||||
ERROR LogLevel = "error"
|
||||
FATAL LogLevel = "fatal"
|
||||
)
|
||||
|
||||
type LogFormat string
|
||||
|
||||
const (
|
||||
@ -155,7 +147,7 @@ const defaultBlockSize = 1024 * 64
|
||||
|
||||
type Config struct {
|
||||
// Default: INFO
|
||||
LogLevel LogLevel `json:"log-level,omitempty"`
|
||||
LogLevel string `json:"log-level,omitempty"`
|
||||
|
||||
// Specifies what kind of logs should be written to stdout
|
||||
// Default: auto
|
||||
@ -788,24 +780,45 @@ func (node CodexNode) UploadFileAsync(options UploadOptions, onDone func(cid str
|
||||
}()
|
||||
}
|
||||
|
||||
func (node CodexNode) UpdateLogLevel(logLevel string) error {
|
||||
bridge := newBridgeCtx()
|
||||
defer bridge.free()
|
||||
|
||||
var cLogLevel = C.CString(string(logLevel))
|
||||
defer C.free(unsafe.Pointer(cLogLevel))
|
||||
|
||||
if C.cGoCodexLogLevel(node.ctx, cLogLevel, bridge.resp) != C.RET_OK {
|
||||
return bridge.callError("cGoCodexLogLevel")
|
||||
}
|
||||
|
||||
_, err := bridge.wait()
|
||||
return err
|
||||
}
|
||||
|
||||
func main() {
|
||||
node, err := New(Config{
|
||||
BlockRetries: 5,
|
||||
LogLevel: "WARN",
|
||||
})
|
||||
if err != nil {
|
||||
log.Fatalf("Failed to create Codex node: %v", err)
|
||||
}
|
||||
|
||||
if err := node.Start(); err != nil {
|
||||
log.Fatalf("Failed to start Codex node: %v", err)
|
||||
}
|
||||
log.Println("Codex node started")
|
||||
|
||||
version, err := node.Version()
|
||||
if err != nil {
|
||||
log.Fatalf("Failed to get Codex version: %v", err)
|
||||
}
|
||||
log.Printf("Codex version: %s", version)
|
||||
|
||||
if err := node.Start(); err != nil {
|
||||
log.Fatalf("Failed to start Codex node: %v", err)
|
||||
err = node.UpdateLogLevel("ERROR")
|
||||
if err != nil {
|
||||
log.Fatalf("Failed to update log level: %v", err)
|
||||
}
|
||||
log.Println("Codex node started")
|
||||
|
||||
buf := bytes.NewBuffer([]byte("Hello World!"))
|
||||
len := buf.Len()
|
||||
|
||||
@ -22,21 +22,28 @@ logScope:
|
||||
type NodeDebugMsgType* = enum
|
||||
DEBUG
|
||||
PEER
|
||||
LOG_LEVEL
|
||||
|
||||
type NodeDebugRequest* = object
|
||||
operation: NodeDebugMsgType
|
||||
peerId: cstring
|
||||
logLevel: cstring
|
||||
|
||||
proc createShared*(
|
||||
T: type NodeDebugRequest, op: NodeDebugMsgType, peerId: cstring = ""
|
||||
T: type NodeDebugRequest,
|
||||
op: NodeDebugMsgType,
|
||||
peerId: cstring = "",
|
||||
logLevel: cstring = "",
|
||||
): ptr type T =
|
||||
var ret = createShared(T)
|
||||
ret[].operation = op
|
||||
ret[].peerId = peerId.alloc()
|
||||
ret[].logLevel = logLevel.alloc()
|
||||
return ret
|
||||
|
||||
proc destroyShared(self: ptr NodeDebugRequest) =
|
||||
deallocShared(self[].peerId)
|
||||
deallocShared(self[].logLevel)
|
||||
deallocShared(self)
|
||||
|
||||
proc getDebug(
|
||||
@ -81,6 +88,17 @@ proc getPeer(
|
||||
else:
|
||||
return err("Failed to get peer: peer debug API is disabled")
|
||||
|
||||
proc updateLogLevel(
|
||||
codex: ptr CodexServer, logLevel: cstring
|
||||
): Future[Result[string, string]] {.async: (raises: []).} =
|
||||
try:
|
||||
{.gcsafe.}:
|
||||
updateLogLevel($logLevel)
|
||||
except ValueError as err:
|
||||
return err("Failed to update log level: invalid value for log level: " & err.msg)
|
||||
|
||||
return ok("")
|
||||
|
||||
proc process*(
|
||||
self: ptr NodeDebugRequest, codex: ptr CodexServer
|
||||
): Future[Result[string, string]] {.async: (raises: []).} =
|
||||
@ -99,4 +117,9 @@ proc process*(
|
||||
if res.isErr:
|
||||
error "Failed to get PEER.", error = res.error
|
||||
return err($res.error)
|
||||
of NodeDebugMsgType.LOG_LEVEL:
|
||||
let res = (await updateLogLevel(codex, self.logLevel))
|
||||
if res.isErr:
|
||||
error "Failed to update LOG_LEVEL.", error = res.error
|
||||
return err($res.error)
|
||||
return res
|
||||
|
||||
@ -116,6 +116,13 @@ proc createCodex(
|
||||
return err("Failed to create codex: unable to load configuration: " & e.msg)
|
||||
|
||||
conf.setupLogging()
|
||||
|
||||
try:
|
||||
{.gcsafe.}:
|
||||
updateLogLevel(conf.logLevel)
|
||||
except ValueError as err:
|
||||
return err("Failed to create codex: invalid value for log level: " & err.msg)
|
||||
|
||||
conf.setupMetrics()
|
||||
|
||||
if not (checkAndCreateDataDir((conf.dataDir).string)):
|
||||
|
||||
@ -39,7 +39,7 @@ import ./codex_thread_requests/requests/node_download_request
|
||||
import ./codex_thread_requests/requests/node_storage_request
|
||||
import ./ffi_types
|
||||
|
||||
from ../codex/conf import codexVersion, updateLogLevel
|
||||
from ../codex/conf import codexVersion
|
||||
|
||||
logScope:
|
||||
topics = "codexlib"
|
||||
@ -201,12 +201,13 @@ proc codex_log_level(
|
||||
initializeLibrary()
|
||||
checkLibcodexParams(ctx, callback, userData)
|
||||
|
||||
try:
|
||||
updateLogLevel($logLevel)
|
||||
except ValueError as e:
|
||||
return callback.error(e.msg, userData)
|
||||
let reqContent =
|
||||
NodeDebugRequest.createShared(NodeDebugMsgType.LOG_LEVEL, logLevel = logLevel)
|
||||
let res = codex_context.sendRequestToCodexThread(
|
||||
ctx, RequestType.DEBUG, reqContent, callback, userData
|
||||
)
|
||||
|
||||
return callback.success("", userData)
|
||||
return callback.okOrError(res, userData)
|
||||
|
||||
proc codex_connect(
|
||||
ctx: ptr CodexContext,
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user