/* $Id$ 
 * 
 * Licensed to the Apache Software Foundation (ASF) under one or more 
 * contributor license agreements. See the NOTICE file distributed with  
 * this work for additional information regarding copyright ownership. 
 * The ASF licenses this file to you 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. 
 */ 

/* 
 * etchlog.h 
 * logger for the c binding
 */
#ifndef ETCHLOG_H
#define ETCHLOG_H

#include "etch_config.h"  

 typedef enum etchlog_level 
 {  ETCHLOG_XDEBUG = 0, /* extended debug for low-level or voluminous detail */
    ETCHLOG_DEBUG,      /* traces of connection open close send receive etc */
    ETCHLOG_INFO,       /* display server and client open and close etc */
    ETCHLOG_WARNING,    /* messages that should be noted regardless */
    ETCHLOG_ERROR,      /* failures */
 } etchlog_level;
 
 /**
  * etchlog(), etchlogw()
  * write a log message to console/file/system log depending on configuration.
  * @param cat the category name for this message. should be four characters,
  * upper case, identifying the module originating the log message.
  * @param level logging level of the message. 
  * @param fmt the format string ala printf.
  * @... a variable length argument list ala printf.
  */
void  etchlog (char *cat, etchlog_level level, const char *fmt, ...);

void  etchlogw (wchar_t *comp, etchlog_level level, const wchar_t *fmt, ...);

int   etchlog_open (const int is_client);
int   etchlog_openx(char* filepath);
int   etchlog_open_client();
int   etchlog_open_server();
int   etchlog_close();
int   etchlog_write(char*);
int   etchlog_get_logfile_count();
void  etchlog_set_logfile_count(const int);
char* etchlog_get_dirpath();


#endif /* ETCHLOG_H */
 