You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by da...@apache.org on 2006/01/30 11:05:13 UTC

svn commit: r373482 - /webservices/axis2/trunk/c/modules/util/log.c

Author: damitha
Date: Mon Jan 30 02:05:08 2006
New Revision: 373482

URL: http://svn.apache.org/viewcvs?rev=373482&view=rev
Log:
updated log.c to add more functions

Modified:
    webservices/axis2/trunk/c/modules/util/log.c

Modified: webservices/axis2/trunk/c/modules/util/log.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/util/log.c?rev=373482&r1=373481&r2=373482&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/util/log.c (original)
+++ webservices/axis2/trunk/c/modules/util/log.c Mon Jan 30 02:05:08 2006
@@ -1,100 +1,232 @@
-/*
- * Copyright 2004,2005 The Apache Software Foundation.
- *
- * 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.
- */
-
-#include <axis2_log_default.h>
-#include <stdio.h>
-
-axis2_status_t AXIS2_CALL
-axis2_log_impl_free (axis2_log_t *log)
-{
-    if (NULL != log && NULL != log->ops)
-    {
-        free (log->ops);
-    }
-    if (NULL != log)
-    {
-        free (log); 
-    }
-    return 0;
-}
-
-axis2_status_t AXIS2_CALL axis2_log_impl_write (struct axis2_log *log, const axis2_char_t *buffer, axis2_log_levels_t level);
-
-AXIS2_DECLARE(axis2_log_t *)
-axis2_log_create (axis2_allocator_t * allocator, axis2_log_ops_t * ops)
-{
-    axis2_log_t *log;
-    if (!allocator)
-        return NULL;
-
-    log = (axis2_log_t *) AXIS2_MALLOC (allocator, sizeof (axis2_log_t));
-
-    if (!log)
-        return NULL;
-
-    if (ops)
-        log->ops = ops;
-    else
-    {
-        log->ops =
-            (axis2_log_ops_t *) AXIS2_MALLOC (allocator,
-                                              sizeof (axis2_log_ops_t));
-
-        if (!log->ops)
-        {
-            AXIS2_FREE (allocator, log);
-            return NULL;
-        }
-        log->ops->free = axis2_log_impl_free;
-        log->ops->write = axis2_log_impl_write;
-    }
-
-    return log;
-}
-
-axis2_status_t AXIS2_CALL
-axis2_log_impl_write (struct axis2_log *log, const axis2_char_t *buffer, axis2_log_levels_t level)
-{
-    if (!log || !buffer)
-        return -1;
-    if (level <= log->level)
-    {
-        char *level_str = "";
-        switch (level)
-        {
-            case AXIS2_LOG_LEVEL_CRITICAL:
-                level_str = "[critical] ";
-                break;
-            case AXIS2_LOG_LEVEL_ERROR:
-                level_str = "[error] ";
-                break;
-            case AXIS2_LOG_LEVEL_WARNING:
-                level_str = "[warning] ";
-                break;
-            case AXIS2_LOG_LEVEL_INFO:
-                level_str = "[info] ";
-                break;
-            case AXIS2_LOG_LEVEL_DEBUG:
-                level_str = "[debug] ";
-                break;
-        }
-        fprintf (stderr, "%s", level_str);
-        fprintf (stderr, "%s\n", buffer);
-    }
-    
-    return 0;
-}
-
+/*
+ * Copyright 2004,2005 The Apache Software Foundation.
+ *
+ * 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.
+ */
+
+#include <axis2_log_default.h>
+#include <stdio.h>
+
+axis2_status_t AXIS2_CALL
+axis2_log_impl_free (axis2_log_t *log)
+{
+    if (NULL != log && NULL != log->ops)
+    {
+        free (log->ops);
+    }
+    if (NULL != log)
+    {
+        free (log); 
+    }
+    return 0;
+}
+
+/* function prototypes */
+axis2_status_t AXIS2_CALL axis2_log_impl_write (axis2_log_t *log, const axis2_char_t *buffer, axis2_log_levels_t level,const axis2_char_t *file,const int line);
+axis2_status_t AXIS2_CALL axis2_log_impl_write_to_file(FILE *fd,axis2_log_levels_t level,const axis2_char_t *file,const int line,const axis2_char_t *value);
+axis2_status_t AXIS2_CALL axis2_log_impl_log_critical(axis2_log_t *log,const axis2_char_t *filename,const int linenumber,const axis2_char_t *format,...);
+
+axis2_status_t AXIS2_CALL axis2_log_impl_log_error(axis2_log_t *log,const axis2_char_t *filename,const int linenumber,const axis2_char_t *format,...);
+
+axis2_status_t AXIS2_CALL axis2_log_impl_log_warning(axis2_log_t *log,const axis2_char_t *filename,const int linenumber,const axis2_char_t *format,...);
+
+axis2_status_t AXIS2_CALL axis2_log_impl_log_info(axis2_log_t *log,const axis2_char_t *filename,const int linenumber,const axis2_char_t *format,...);
+
+axis2_status_t AXIS2_CALL axis2_log_impl_log_debug(axis2_log_t *log,const axis2_char_t *filename,const int linenumber,const axis2_char_t *format,...);
+
+AXIS2_DECLARE(axis2_log_t *)
+axis2_log_create (axis2_allocator_t * allocator, axis2_log_ops_t * ops)
+{
+    axis2_log_t *log;
+    if (!allocator)
+        return NULL;
+
+    log = (axis2_log_t *) AXIS2_MALLOC (allocator, sizeof (axis2_log_t));
+
+    if (!log)
+        return NULL;
+
+    if (ops)
+        log->ops = ops;
+    else
+    {
+        log->ops =
+            (axis2_log_ops_t *) AXIS2_MALLOC (allocator,
+                                              sizeof (axis2_log_ops_t));
+
+        if (!log->ops)
+        {
+            AXIS2_FREE (allocator, log);
+            return NULL;
+        }
+        log->ops->free = axis2_log_impl_free;
+        log->ops->write = axis2_log_impl_write;
+		log->ops->log_critical = axis2_log_impl_log_critical;
+		log->ops->log_error = axis2_log_impl_log_error;
+		log->ops->log_warning = axis2_log_impl_log_warning;
+		log->ops->log_info = axis2_log_impl_log_info;
+		log->ops->log_debug = axis2_log_impl_log_debug;
+
+    }
+
+    return log;
+}
+/*TODO:remove this method*/
+axis2_status_t AXIS2_CALL
+axis2_log_impl_write (axis2_log_t *log, const axis2_char_t *buffer, axis2_log_levels_t level,const axis2_char_t *file,const int line)
+{
+    if (!log || !buffer)
+        return -1;
+    if (level <= log->level)
+    {
+        char *level_str = "";
+        switch (level)
+        {
+            case AXIS2_LOG_LEVEL_CRITICAL:
+                level_str = "[critical] ";
+                break;
+            case AXIS2_LOG_LEVEL_ERROR:
+                level_str = "[error] ";
+                break;
+            case AXIS2_LOG_LEVEL_WARNING:
+                level_str = "[warning] ";
+                break;
+            case AXIS2_LOG_LEVEL_INFO:
+                level_str = "[info] ";
+                break;
+            case AXIS2_LOG_LEVEL_DEBUG:
+                level_str = "[debug] ";
+                break;
+        }
+	  fprintf(stderr,"%s %s(%d) %s\n", level_str,file,line,buffer);
+    }
+    
+    return 0;
+}
+
+
+axis2_status_t AXIS2_CALL axis2_log_impl_write_to_file(FILE *fd,axis2_log_levels_t level,const axis2_char_t *file,const int line,const axis2_char_t *value)
+{
+	if (!fd)
+		return -1;
+	/**
+      * print all critical and error logs irrespective of log->level setting
+	  */
+    char *level_str = "";
+    switch (level)
+    {
+    	case AXIS2_LOG_LEVEL_CRITICAL:
+        	level_str = "[critical] ";
+            break;
+        case AXIS2_LOG_LEVEL_ERROR:
+            level_str = "[error] ";
+            break;
+        case AXIS2_LOG_LEVEL_WARNING:
+            level_str = "[warning] ";
+            break;
+        case AXIS2_LOG_LEVEL_INFO:
+            level_str = "[info] ";
+            break;
+        case AXIS2_LOG_LEVEL_DEBUG:
+            level_str = "[debug] ";
+            break;
+    }
+	fprintf(fd,"%s %s(%d) %s\n", level_str,file,line,value);
+	return 0;
+}
+
+axis2_status_t AXIS2_CALL 
+axis2_log_impl_log_debug(axis2_log_t *log,const axis2_char_t *filename,const int linenumber,const axis2_char_t *format,...)
+{
+	if (!log || !format)
+		return -1;
+	
+	if (AXIS2_LOG_LEVEL_DEBUG <= log->level)
+	{
+		char value[AXIS2_LEN_VALUE+1];
+    	va_list ap;
+    	va_start(ap, format);
+    	vsnprintf(value, AXIS2_LEN_VALUE, format, ap);
+    	va_end(ap);
+		axis2_log_impl_write_to_file(stderr,AXIS2_LOG_LEVEL_DEBUG,filename,linenumber,value);
+	}
+	return 0;
+}
+
+axis2_status_t AXIS2_CALL 
+axis2_log_impl_log_info(axis2_log_t *log,const axis2_char_t *filename,const int linenumber,const axis2_char_t *format,...)
+{
+	if (!log || !format)
+		return -1;
+	
+	if (AXIS2_LOG_LEVEL_INFO <= log->level)
+	{
+		char value[AXIS2_LEN_VALUE+1];
+    	va_list ap;
+    	va_start(ap, format);
+    	vsnprintf(value, AXIS2_LEN_VALUE, format, ap);
+    	va_end(ap);
+		axis2_log_impl_write_to_file(stderr,AXIS2_LOG_LEVEL_INFO,filename,linenumber,value);
+	}
+	return 0;
+}
+
+axis2_status_t AXIS2_CALL 
+axis2_log_impl_log_warning(axis2_log_t *log,const axis2_char_t *filename,const int linenumber,const axis2_char_t *format,...)
+{
+	if (!log || !format)
+		return -1;
+	
+	if (AXIS2_LOG_LEVEL_WARNING <= log->level)
+	{
+		char value[AXIS2_LEN_VALUE+1];
+    	va_list ap;
+    	va_start(ap, format);
+    	vsnprintf(value, AXIS2_LEN_VALUE, format, ap);
+    	va_end(ap);
+		axis2_log_impl_write_to_file(stderr,AXIS2_LOG_LEVEL_WARNING,filename,linenumber,value);
+	}
+	return 0;
+}
+
+
+axis2_status_t AXIS2_CALL 
+axis2_log_impl_log_error(axis2_log_t *log,const axis2_char_t *filename,const int linenumber,const axis2_char_t *format,...)
+{
+	if (!log || !format)
+		return -1;
+	
+	char value[AXIS2_LEN_VALUE+1];
+   	va_list ap;
+   	va_start(ap, format);
+   	vsnprintf(value, AXIS2_LEN_VALUE, format, ap);
+   	va_end(ap);
+	axis2_log_impl_write_to_file(stderr,AXIS2_LOG_LEVEL_ERROR,filename,linenumber,value);
+	return 0;
+}
+	
+axis2_status_t AXIS2_CALL 
+axis2_log_impl_log_critical(axis2_log_t *log,const axis2_char_t *filename,const int linenumber,const axis2_char_t *format,...)
+{
+	if (!log || !format)
+		return -1;
+	
+	char value[AXIS2_LEN_VALUE+1];
+   	va_list ap;
+   	va_start(ap, format);
+   	vsnprintf(value, AXIS2_LEN_VALUE, format, ap);
+   	va_end(ap);
+	axis2_log_impl_write_to_file(stderr,AXIS2_LOG_LEVEL_CRITICAL,filename,linenumber,value);
+	return 0;
+}
+