Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
logger_std_h(3)		   Erlang Module Definition	       logger_std_h(3)

       logger_std_h - Standard handler for Logger.

       This  is	 the  standard	handler	for Logger. Multiple instances of this
       handler can be added to Logger, and each	instance prints	logs to	 stan-
       dard_io,	standard_error,	or to file.

       The handler has an overload protection mechanism	that keeps the handler
       process and the Kernel application  alive  during  high	loads  of  log
       events.	How overload protection	works, and how to configure it,	is de-
       scribed in the User's Guide.

       To add a	new instance of	 the  standard	handler,  use  logger:add_han-
       dler/3.	The  handler configuration argument is a map which can contain
       general configuration parameters, as documented in  the	User's	Guide,
       and  handler  specific parameters. The specific data is stored in a sub
       map with	the key	config,	and can	contain	the following parameters:

	 type =	standard_io | standard_error | file:
	   Specifies the log destination.

	   The value is	set when the handler is	 added,	 and  it  can  not  be
	   changed in runtime.

	   Defaults  to	 standard_io, unless parameter file is given, in which
	   case	it defaults to file.

	 file =	file:filename():
	   This	specifies the name of the log file when	the handler is of type

	   The	value  is  set	when  the  handler is added, and it can	not be
	   changed in runtime.

	   Defaults to the same	name as	the handler identity, in  the  current

	 modes = [file:mode()]:
	   This	specifies the file modes to use	when opening the log file, see
	   file:open/2.	If modes are not specified, the	default	list  used  is
	   [raw,append,delayed_write].	If  modes  are specified, the list re-
	   places the default modes list with the following adjustments:

	      If raw is	not found in the list, it is added.

	      If none of write,	append or exclusive is found in	the list,  ap-
	     pend is added.

	   * If	 none  of delayed_write	or {delayed_write,Size,Delay} is found
	     in	the list, delayed_write	is added.

	   Log files are always	UTF-8 encoded. The encoding can	not be changed
	   by setting the mode {encoding,Encoding}.

	   The	value  is  set	when  the  handler is added, and it can	not be
	   changed in runtime.

	   Defaults to [raw,append,delayed_write].

	 max_no_bytes =	pos_integer() |	infinity:
	   This	parameter specifies if the log file should be rotated or  not.
	   The value infinity means the	log file will grow indefinitely, while
	   an integer value specifies at which file size (bytes) the  file  is

	   Defaults to infinity.

	 max_no_files =	non_neg_integer():
	   This	parameter specifies the	number of rotated log file archives to
	   keep. This has meaning only if max_no_bytes is set  to  an  integer

	   The	log archives are named FileName.0, FileName.1, ... FileName.N,
	   where FileName is the name of the current log file.	FileName.0  is
	   the newest of the archives. The maximum value for N is the value of
	   max_no_files	minus 1.

	   Notice that setting this value to 0 does not	turn of	 rotation.  It
	   only	specifies that no archives are kept.

	   Defaults to 0.

	 compress_on_rotate = boolean():
	   This	 parameter specifies if	the rotated log	file archives shall be
	   compressed or not. If set to	true, all archives are compressed with
	   gzip, and renamed to	FileName.N.gz

	   compress_on_rotate has no meaning if	max_no_bytes has the value in-

	   Defaults to false.

	 file_check = non_neg_integer():
	   When	logger_std_h logs to a file, it	reads the file information  of
	   the	log  file  prior to each write operation. This is to make sure
	   the file still exists and has the same inode	as when	it was opened.
	   This	 implies some performance loss,	but ensures that no log	events
	   are lost in the case	when the file has been removed or  renamed  by
	   an external actor.

	   In  order  to allow minimizing the performance loss,	the file_check
	   parameter can be set	to a positive integer value,  N.  The  handler
	   will	 then  skip  reading the file information prior	to writing, as
	   long	as no more than	N milliseconds have passed since it  was  last

	   Notice  that	 the  risk  of	loosing	 log  events  grows  when  the
	   file_check value grows.

	   Defaults to 0.

	 filesync_repeat_interval = pos_integer() | no_repeat:
	   This	value, in milliseconds,	specifies how often the	handler	does a
	   file	sync operation to write	buffered data to disk. The handler at-
	   tempts the operation	repeatedly, but	only performs a	 new  sync  if
	   something has actually been logged.

	   If  no_repeat  is set as value, the repeated	file sync operation is
	   disabled, and it is the operating system  settings  that  determine
	   how	quickly	 or  slowly data is written to disk. The user can also
	   call	the filesync/1 function	to perform a file sync.

	   Defaults to 5000 milliseconds.

       Other configuration parameters exist, to	be used	 for  customizing  the
       overload	protection behaviour. The same parameters are used both	in the
       standard	handler	and the	disk_log handler, and are  documented  in  the
       User's Guide.

       Notice  that  if	 changing the configuration of the handler in runtime,
       the type, file, or modes	parameters must	not be modified.

       Example of adding a standard handler:

       logger:add_handler(my_standard_h, logger_std_h,
			  #{config => #{file =>	"./system_info.log",
					filesync_repeat_interval => 1000}}).

       To set the default handler, that	starts initially with the  Kernel  ap-
       plication, to log to file instead of standard_io, change	the Kernel de-
       fault logger configuration. Example:

       erl -kernel logger '[{handler,default,logger_std_h,
			     #{config => #{file	=> "./log.log"}}}]'

       An example of how to replace the	standard handler with a	disk_log  han-
       dler at startup is found	in the logger_disk_log_h manual.

       filesync(Name) -> ok | {error, Reason}


		 Name =	atom()
		 Reason	= handler_busy | {badarg, term()}

	      Write buffered data to disk.

       logger(3), logger_disk_log_h(3)

Ericsson AB			  kernel 6.3		       logger_std_h(3)


Want to link to this manual page? Use this URL:

home | help