This is an automated email from the ASF dual-hosted git repository.

ronny pushed a commit to branch feat/use-new-otp-logger
in repository https://gitbox.apache.org/repos/asf/couchdb.git

commit c3dc247dbcc6d0184041762c402b5981622a8518
Author: Ronny Berndt <[email protected]>
AuthorDate: Sun May 11 15:08:17 2025 +0200

    test new logger
    
    simply add
    
    [log]
    writer=otp
    
    to CouchDBs config file and there should be a new file
    in the CouchDB root dir `couch_new.log[.1,idx,siz]`.
---
 src/couch_log/src/couch_log_writer_otp.erl | 63 ++++++++++++++++++++++++++++++
 1 file changed, 63 insertions(+)

diff --git a/src/couch_log/src/couch_log_writer_otp.erl 
b/src/couch_log/src/couch_log_writer_otp.erl
new file mode 100644
index 000000000..3689fe759
--- /dev/null
+++ b/src/couch_log/src/couch_log_writer_otp.erl
@@ -0,0 +1,63 @@
+% Licensed under the Apache License, Version 2.0 (the "License"); you may not
+% use this file except in compliance with the License. You may obtain a copy of
+% the License at
+%
+%   http://www.apache.org/licenses/LICENSE-2.0
+%
+% Unless required by applicable law or agreed to in writing, software
+% distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+% WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+% License for the specific language governing permissions and limitations under
+% the License.
+
+-module(couch_log_writer_otp).
+-behaviour(couch_log_writer).
+
+-export([
+    init/0,
+    terminate/2,
+    write/2
+]).
+
+-include("couch_log.hrl").
+
+init() ->
+    FilePath = config:get("log", "file_new", "./couch_new.log"),
+    logger:add_handler(
+        my_new_disk_log,
+        logger_disk_log_h,
+        #{ config => #{
+                    level = info,
+                    file => FilePath,
+                    max_no_files => 5},
+                    formatter => {
+                        logger_formatter,
+                        #{}
+                    }
+        }),
+    {ok, nil}.
+
+terminate(_, _St) ->
+    ok.
+
+write(#log_entry{} = Entry, St) ->
+    #log_entry{
+        level = Level,
+        pid = Pid,
+        msg = Msg,
+        msg_id = MsgId,
+        time_stamp = TimeStamp
+    } = couch_log_util:maybe_format_type(Entry),
+    Fmt = "TEST [~s] ~s ~s ~p ~s ",
+    Args = [
+        couch_log_util:level_to_string(Level),
+        TimeStamp,
+        config:node_name(),
+        Pid,
+        MsgId
+    ],
+    MsgSize = couch_log_config:get(max_message_size),
+    Data = couch_log_trunc_io:format(Fmt, Args, MsgSize),
+    logger:notice([Data, Msg, "\n"]),
+    %io:format(standard_error, [Data, Msg, "\n"], []),
+    {ok, St}.

Reply via email to