Tag: 日志

我如何在运行时访问configuration的Log4J appender?

我想在启动时configuration一个appender,然后根据需要dynamic添加并从各种logging器中删除它。 我宁愿有log4jconfiguration这个appender本身,只是在需要的时候抓住一个引用。 如果这是不可能的,我将不得不自己实例化appender,并坚持下去。

Parallel.ForEach块吗?

.net函数Parallel.ForEach是否阻塞调用线程? 我对这种行为的猜测是其中之一: 是的,它阻塞,直到最慢的项目执行返回。 不,它不会立即阻止并返回控件。 要并行运行的项目是在后台线程上完成的。 或者也许别的事情正在发生,任何人都知道肯定? 在一个日志类中实现这个问题时出现了这个问题: public class MultipleLoggingService : LoggingServiceBase { private readonly List<LoggingServiceBase> loggingServices; public MultipleLoggingService(List<LoggingServiceBase> loggingServices) { this.loggingServices = loggingServices; LogLevelChanged += OnLogLevelChanged; } private void OnLogLevelChanged(object sender, LogLevelChangedArgs args) { loggingServices.ForEach(l => l.LogLevel = LogLevel); } public override LogMessageResponse LogMessage(LogMessageRequest request) { if (request.LogMessage) Parallel.ForEach(loggingServices, l => l.LogMessage(request)); return new […]

外部log4j.xml文件

我想在jar之外的文件系统上使用log4j.xml文件来运行jar,就像这样: java -jar MyJarName.jar -cp=/opt/companyName/pathToJar/ log4j.configuration=log4j.xml argToJar1 argToJar2 我也试过了: java -jar MyJarName.jar -cp=/opt/companyName/pathToJar/ log4j.configuration=/opt/companyName/pathToJar/log4j.xml argToJar1 argToJar2 log4j.xml文件与jar(/ opt / companyName / pathToJar /)位于同一目录中,但仍然收到标准警告消息: log4j:WARN No appenders could be found for logger (org.apache.axis.i18n.ProjectResourceBundle). log4j:WARN Please initialize the log4j system properly. 是否有可能在jar外的configuration文件,或者我必须打包与jar? TIA

在log4j中configurationRollingFileAppender

我正在研究一组Web服务,我们希望每天都有一个轮换的日志。 我试图从log4j额外的同伴工作,以获得org.apache.log4j.rolling.RollingFileAppender ,因为文档build议这是最适合生产环境。 我在类path上同时具有主要的log4J库( log4j-1.2.15.jar )和log4j额外的库( apache-log4j-extras-1.1.jar )。 我在log4j.properties文件中为appenderconfiguration了以下configuration: ### SOAP Request Appender log4j.appender.request=org.apache.log4j.rolling.RollingFileAppender log4j.appender.request.File=SOAPmessages.log log4j.appender.request.RollingPolicy=org.apache.log4j.rolling.TimeBasedRollingPolicy log4j.appender.request.RollingPolicy.ActiveFileName =SOAPmessages-%d.log log4j.appender.request.RollingPolicy.FileNamePattern=SOAPmessages-%d.log.zip log4j.appender.request.layout = org.apache.log4j.PatternLayout log4j.appender.request.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L – %m%n 但是,当我在debugging模式下使用log4j启动Web服务时,出现以下错误消息: log4j: Parsing appender named "request". log4j: Parsing layout options for "request". log4j: Setting property [conversionPattern] to [%d{ABSOLUTE} %5p %c{1}:%L – %m%n]. log4j: End of parsing for "request". […]

log4j.properties文件 – 同一类中的多个logging器

我想在我的应用程序中有两个不同的log4jlogging器,并且在他们写入他们的尊重日志的内容之间没有“重叠”。 例如: Logger1写入与一组系统事件有关的INFO事件 Logger2写入与另一组系统事件有关的INFO事件 日志中不应出现两次 我的log4j.properties如下所示: log4j.rootLogger=DEBUG, stdout log4j.logger.org.apache=DEBUG, stdout log4j.logger.xdasLogger=DEBUG, xdas log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%m%n log4j.appender.xdas=org.apache.log4j.ConsoleAppender log4j.appender.xdas.layout=org.apache.log4j.PatternLayout log4j.appender.xdas.layout.ConversionPattern=%d %-5p %c – %m%n 我的Java代码如下: public static void main(String[] args) { PropertyConfigurator.configure(Client.class .getResource("/log4j.properties")); xdasLogger = Logger.getLogger("xdasLogger"); logger = Logger.getLogger(Client.class); logger.info("normal"); xdasLogger.info("xdas"); } 但是我的控制台输出如下: normal 2012-06-28 09:52:44,580 INFO xdasLogger – xdas xdas 请注意,“xdas”由logger和xdasLogger logger ,这是不可取的。 有谁知道我需要把我的log4j.properties更改控制台输出到以下更改什么更改? normal 2012-06-28 […]

Google analytics 3.08 IOS idfa class missing,不会收集idfa

我下载谷歌分析,我按照他们的指示如何在应用程序中实施分析。 但无论我尝试我得到这个日志xcode: idfa class missing, won't collect idfa 。 所以我谷歌,发现苹果将拒绝具有此警告的应用程序。 我也发现谷歌3.03c版本解决了这个问题,我们不必导入使用广告的库。 我也运行他们的例子,我得到相同的日志在他们的例子。 所以我的问题是,苹果是否会批准我的申请,我该如何解决?

如何使用Spring MVC正确logginghttp请求

你好我一直在试图找出通用的方式来logging我的应用程序中的http请求,到目前为止没有运气,这里是我如何处理现在的日志logging,即: @RequestMapping(value="register", method = RequestMethod.POST) @ResponseBody public String register(@RequestParam(value="param1",required=false) String param1, @RequestParam("param2") String param2, @RequestParam("param3") String param3, HttpServletRequest request){ long start = System.currentTimeMillis(); logger.info("!–REQUEST START–!"); logger.info("Request URL: " + request.getRequestURL().toString()); List<String> requestParameterNames = Collections.list((Enumeration<String>)request.getParameterNames()); logger.info("Parameter number: " + requestParameterNames.size()); for (String parameterName : requestParameterNames){ logger.info("Parameter name: " + parameterName + " – Parameter value: " […]

Log4j:为什么根logging器收集所有日志types而不考虑configuration?

我有一个问题,即使我在根标记中指定错误级别,指定的appender会将所有级别(debug,info,warn)logging到文件中,而不pipe设置如何。 我不是一个log4j专家,所以任何帮助表示赞赏。 以下是关于这个主题的更多信息: 我已经检查log4j.properties的类path(没有),除了log4j.xml 这里是log4j.xml文件: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'> <!– ============================== –> <!– Append messages to the console –> <!– ============================== –> <appender name="console" class="org.apache.log4j.ConsoleAppender"> <param name="Target" value="System.out" /> <layout class="org.apache.log4j.PatternLayout"> <!– The default pattern: Date Priority [Category] Message\n –> <param name="ConversionPattern" value="[AC – %5p] [%d{ISO8601}] [%t] [%c{1} – […]

C#中有__LINE__ __FILE__等价物吗?

为了logging目的 __LINE__ __FILE__ 是我在C / C ++中的朋友。 在Java获取这些信息,我不得不抛出一个exception,并抓住它。 为什么现代编程语言中这些旧的standbys被忽略了? 他们的简单有些神奇。

logging器slf4j格式化的优点是{}而不是string连接

有没有使用{}而不是string连接的优势? 来自slf4j的一个例子 logger.debug("Temperature set to {}. Old temperature was {}.", t, oldT); 代替 logger.debug("Temperature set to"+ t + ". Old temperature was " + oldT); 我认为这是关于速度优化,因为参数评估(和string连接)可以在运行时避免取决于configuration文件。 但是只有两个参数是可能的,有时除了string连接之外没有别的select。 对这个问题需要看法。