about summary refs log tree commit diff
path: root/src/rt/rust_log.cpp
diff options
context:
space:
mode:
authorArkaitz Jimenez <arkaitzj@gmail.com>2012-06-04 01:53:24 +0100
committerArkaitz Jimenez <arkaitzj@gmail.com>2012-06-04 01:53:24 +0100
commitdad300758486b59ac1356d55dbc2accd8e8d9720 (patch)
treed58c8671852afaa4bd69f32af2cad7c985cff842 /src/rt/rust_log.cpp
parent0ecf20c99a43d0d258b08ebbd62526b69f013794 (diff)
downloadrust-dad300758486b59ac1356d55dbc2accd8e8d9720.tar.gz
rust-dad300758486b59ac1356d55dbc2accd8e8d9720.zip
Moved log method into logger class better than scheduler fixes #2495
Diffstat (limited to 'src/rt/rust_log.cpp')
-rw-r--r--src/rt/rust_log.cpp17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/rt/rust_log.cpp b/src/rt/rust_log.cpp
index 29d35e27c21..774a549fe8b 100644
--- a/src/rt/rust_log.cpp
+++ b/src/rt/rust_log.cpp
@@ -90,6 +90,22 @@ append_string(char *buffer, const char *format, ...) {
 }
 
 void
+rust_log::log(rust_task* task, uint32_t level, char const *fmt, ...) {
+    char buf[BUF_BYTES];
+    va_list args;
+    va_start(args, fmt);
+    int formattedbytes = vsnprintf(buf, sizeof(buf), fmt, args);
+    if( formattedbytes and (unsigned)formattedbytes > BUF_BYTES ){
+        const char truncatedstr[] = "[...]";
+        memcpy( &buf[BUF_BYTES-sizeof(truncatedstr)],
+                truncatedstr,
+                sizeof(truncatedstr));
+    }
+    trace_ln(task, level, buf);
+    va_end(args);
+}
+
+void
 rust_log::trace_ln(char *prefix, char *message) {
     char buffer[BUF_BYTES] = "";
     _log_lock.lock();
@@ -302,6 +318,7 @@ void update_log_settings(void* crate_map, char* settings) {
     free(buffer);
 }
 
+
 //
 // Local Variables:
 // mode: C++