blob: 4362262b4335cc084f4541fbbe08fc7026625f35 [file] [log] [blame]
/*
* Copyright 2001-2008 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.
*
*/
using org.apache.juddi.v3.client.config;
using System;
using System.Collections.Generic;
using System.Text;
namespace org.apache.juddi.v3.client.log
{
/// <summary>
/// The LogFactor reads from the current configuration (.NET, not the Juddi-Client config xml)
/// and produces the appropriate logger
/// </summary>
/// <author><a href="mailto:alexoree@apache.org">Alex O'Ree</a></author>
public class LogFactory
{
private static LogLevel level = LogLevel.WARN;
private static String target = "CONSOLE";
private static bool inited = false;
private static object thelock = new object();
private static string option = "";
private static void init()
{
lock (thelock)
{
if (inited)
return;
level = LogLevel.WARN;
try
{
String s = "WARN";
s = System.Configuration.ConfigurationManager.AppSettings["org.apache.juddi.v3.client.log.level"];
if (String.IsNullOrEmpty(s))
s = "WARN";
level = (LogLevel)Enum.Parse(typeof(LogLevel), s);
}
catch
{
level = LogLevel.WARN;
}
String target = "";
try
{
target = System.Configuration.ConfigurationManager.AppSettings["org.apache.juddi.v3.client.log.target"];
}
catch
{
target = "CONSOLE";
}
try
{
option = System.Configuration.ConfigurationManager.AppSettings["org.apache.juddi.v3.client.log.logger.file"];
}
catch
{
}
inited = true;
}
}
public static Log getLog(String name)
{
init();
return getLogger(name);
}
public static Log getLog(String name, String targets, LogLevel level1, String options1)
{
return getLogger(name, targets, level1, options1);
}
private static Log getLogger(String name1, String targets1, LogLevel level1, String options1)
{
string[] targets = targets1.Split(',');
Log ret = null;
Log last = null;
for (int i = 0; i < targets.Length; i++)
{
last = ret;
if (targets[i].Equals("CONSOLE", StringComparison.CurrentCultureIgnoreCase))
{
ret = new ConsoleLogger();
}
else if (targets[i].Equals("EVENTLOG", StringComparison.CurrentCultureIgnoreCase))
{
ret = new EventLogger();
}
else if (targets[i].Equals("FILE", StringComparison.CurrentCultureIgnoreCase))
{
ret = new FileLogger(options1);
}
else
ret = new ConsoleLogger();
ret.setName(name1);
ret.setLevel(level1);
if (last != null)
ret.setDownstream(last);
}
return ret;
}
private static Log getLogger(String name)
{
return getLogger(name, target, level, option);
}
public static Log getLog(Type type)
{
init();
return getLogger(type.Name);
//return new ConsoleLogger(type.Name, level);
}
}
}