You are viewing a plain text version of this content. The canonical link for it is here.
Posted to general@logging.apache.org by sd...@apache.org on 2011/08/17 09:13:43 UTC
svn commit: r1158546 - in
/logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw:
LogFilePatternLayoutBuilder.java LogUI.java
vfs/VFSLogFilePatternReceiver.java
Author: sdeboy
Date: Wed Aug 17 07:13:43 2011
New Revision: 1158546
URL: http://svn.apache.org/viewvc?rev=1158546&view=rev
Log:
Fix case sensitivity in configuration parsing
Fix VFS tailing, particularly with sftp (the filesystem needed to be closed)
Modified:
logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogFilePatternLayoutBuilder.java
logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogUI.java
logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/vfs/VFSLogFilePatternReceiver.java
Modified: logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogFilePatternLayoutBuilder.java
URL: http://svn.apache.org/viewvc/logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogFilePatternLayoutBuilder.java?rev=1158546&r1=1158545&r2=1158546&view=diff
==============================================================================
--- logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogFilePatternLayoutBuilder.java (original)
+++ logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogFilePatternLayoutBuilder.java Wed Aug 17 07:13:43 2011
@@ -32,6 +32,7 @@ import javax.xml.parsers.DocumentBuilder
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
+import org.apache.log4j.chainsaw.messages.MessageCenter;
import org.apache.log4j.helpers.OptionConverter;
import org.apache.log4j.pattern.ClassNamePatternConverter;
import org.apache.log4j.pattern.DatePatternConverter;
@@ -255,14 +256,14 @@ public class LogFilePatternLayoutBuilder
Node appenderChild = appenderChildren.item(j);
if (appenderChild.getNodeName().equals("param") && appenderChild.hasAttributes()) {
Node fileNameNode = appenderChild.getAttributes().getNamedItem("name");
- if (fileNameNode != null && fileNameNode.getNodeValue().equals("file")) {
+ if (fileNameNode != null && fileNameNode.getNodeValue().toLowerCase().equals("file")) {
Node fileValueNode = appenderChild.getAttributes().getNamedItem("value");
if (fileValueNode != null) {
entry.put("file", fileValueNode.getNodeValue());
}
}
}
- if (appenderChild.getNodeName().equals("layout") && appenderChild.hasAttributes()) {
+ if (appenderChild.getNodeName().toLowerCase().equals("layout") && appenderChild.hasAttributes()) {
NamedNodeMap layoutAttributes = appenderChild.getAttributes();
Node layoutNode = layoutAttributes.getNamedItem("class");
if (layoutNode != null && layoutNode.getNodeValue() != null && layoutNode.getNodeValue().equals("org.apache.log4j.PatternLayout")) {
@@ -271,7 +272,7 @@ public class LogFilePatternLayoutBuilder
Node layoutChild = layoutChildren.item(k);
if (layoutChild.getNodeName().equals("param") && layoutChild.hasAttributes()) {
Node layoutName = layoutChild.getAttributes().getNamedItem("name");
- if (layoutName != null && layoutName.getNodeValue() != null && layoutName.getNodeValue().equals("ConversionPattern")) {
+ if (layoutName != null && layoutName.getNodeValue() != null && layoutName.getNodeValue().toLowerCase().equals("conversionpattern")) {
Node conversionValue = layoutChild.getAttributes().getNamedItem("value");
if (conversionValue != null) {
entry.put("conversion", conversionValue.getNodeValue());
@@ -289,6 +290,7 @@ public class LogFilePatternLayoutBuilder
} finally {
stream.close();
}
+ MessageCenter.getInstance().getLogger().info("getXMLFileAppenderConfiguration for file: " + file + ", result: " + result);
return result;
}
}
Modified: logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogUI.java
URL: http://svn.apache.org/viewvc/logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogUI.java?rev=1158546&r1=1158545&r2=1158546&view=diff
==============================================================================
--- logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogUI.java (original)
+++ logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogUI.java Wed Aug 17 07:13:43 2011
@@ -1427,7 +1427,7 @@ public class LogUI extends JFrame implem
}
/**
- * Displays a dialog which will provide options for selecting a configuratino
+ * Displays a dialog which will provide options for selecting a configuration
*/
private void showReceiverConfigurationPanel() {
SwingUtilities.invokeLater(
Modified: logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/vfs/VFSLogFilePatternReceiver.java
URL: http://svn.apache.org/viewvc/logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/vfs/VFSLogFilePatternReceiver.java?rev=1158546&r1=1158545&r2=1158546&view=diff
==============================================================================
--- logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/vfs/VFSLogFilePatternReceiver.java (original)
+++ logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/vfs/VFSLogFilePatternReceiver.java Wed Aug 17 07:13:43 2011
@@ -314,9 +314,8 @@ public class VFSLogFilePatternReceiver e
}
vfsReader = new VFSReader();
new Thread(vfsReader).start();
- }
+ } else if (oldURL != null && oldURL.indexOf("://") > -1) {
//starts with protocol://
- if (oldURL != null && oldURL.indexOf("://") > -1) {
int index = oldURL.indexOf("://");
String lastPart = oldURL.substring(index + "://".length());
int passEndIndex = lastPart.indexOf("@");
@@ -403,6 +402,7 @@ public class VFSLogFilePatternReceiver e
//fileobject was created above, release it and construct a new one
if (fileObject != null) {
+ fileObject.getFileSystem().getFileSystemManager().closeFileSystem(fileObject.getFileSystem());
fileObject.close();
fileObject = null;
}
@@ -435,15 +435,6 @@ public class VFSLogFilePatternReceiver e
rac.close();
}
try {
- //release file so it can be externally deleted/renamed if necessary
- fileObject.close();
- fileObject = null;
- }
- catch (IOException e)
- {
- getLogger().debug(getPath() + " - unable to close fileobject", e);
- }
- try {
if (reader != null) {
reader.close();
reader = null;
Re: svn commit: r1158546 - in /logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw: LogFilePatternLayoutBuilder.java LogUI.java vfs/VFSLogFilePatternReceiver.java
Posted by Stefan Bodewig <bo...@apache.org>.
On 2011-08-17, Scott Deboy wrote:
> Any suggestions for where startsWith, endsWith or contains are used?
In Ant we explicitly use toLowerCase(Locale.ENGLISH) in this case.
Stefan
Re: svn commit: r1158546 - in /logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw: LogFilePatternLayoutBuilder.java LogUI.java vfs/VFSLogFilePatternReceiver.java
Posted by Curt Arnold <ca...@apache.org>.
XML is case-sensitive by design driven at least in part of the cultural variance in character equivalences. There would be no expectation that if the documentation for a schema says "file", that you could get away with "FILE" or some other variation.
Seems to be an expensive way to get a check of an attribute if that is what you are trying to do in the context. Typically it would be done like "file".Equals(appenderChild.getAttribute("name")).
On Aug 17, 2011, at 2:54 AM, Scott Deboy wrote:
> Any suggestions for where startsWith, endsWith or contains are used?
>
> On Wed, Aug 17, 2011 at 12:44 AM, Scott Deboy <sc...@gmail.com> wrote:
> Thanks Stefan, I'll take care of it..
>
>
> On Wed, Aug 17, 2011 at 12:26 AM, Stefan Bodewig <bo...@apache.org> wrote:
> Hi Scott,
>
> I don't know why commit mails go to the general list, but this one
> caught my eye:
>
> On 2011-08-17, <sd...@apache.org> wrote:
>
> > Node fileNameNode = appenderChild.getAttributes().getNamedItem("name");
> > - if (fileNameNode != null && fileNameNode.getNodeValue().equals("file")) {
> > + If (fileNameNode != null && fileNameNode.getNodeValue().toLowerCase().equals("file")) {
>
> this is a locale sensitive comparison which is likely to cause problems
> in the famous Turkish/Azeri locale case ("I".toLowerCase() != "i"
> there).
>
> You may want to use fileNameNode.getNodeValue().equalsIgnoreCase("file")
> instead, which is safe.
>
> Stefan
>
>
Re: svn commit: r1158546 - in /logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw:
LogFilePatternLayoutBuilder.java LogUI.java vfs/VFSLogFilePatternReceiver.java
Posted by Scott Deboy <sc...@gmail.com>.
Any suggestions for where startsWith, endsWith or contains are used?
On Wed, Aug 17, 2011 at 12:44 AM, Scott Deboy <sc...@gmail.com> wrote:
> Thanks Stefan, I'll take care of it..
>
>
> On Wed, Aug 17, 2011 at 12:26 AM, Stefan Bodewig <bo...@apache.org>wrote:
>
>> Hi Scott,
>>
>> I don't know why commit mails go to the general list, but this one
>> caught my eye:
>>
>> On 2011-08-17, <sd...@apache.org> wrote:
>>
>> > Node fileNameNode =
>> appenderChild.getAttributes().getNamedItem("name");
>> > - if (fileNameNode != null &&
>> fileNameNode.getNodeValue().equals("file")) {
>> > + If (fileNameNode != null &&
>> fileNameNode.getNodeValue().toLowerCase().equals("file")) {
>>
>> this is a locale sensitive comparison which is likely to cause problems
>> in the famous Turkish/Azeri locale case ("I".toLowerCase() != "i"
>> there).
>>
>> You may want to use fileNameNode.getNodeValue().equalsIgnoreCase("file")
>> instead, which is safe.
>>
>> Stefan
>>
>
>
Re: svn commit: r1158546 - in /logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw:
LogFilePatternLayoutBuilder.java LogUI.java vfs/VFSLogFilePatternReceiver.java
Posted by Scott Deboy <sc...@gmail.com>.
Thanks Stefan, I'll take care of it..
On Wed, Aug 17, 2011 at 12:26 AM, Stefan Bodewig <bo...@apache.org> wrote:
> Hi Scott,
>
> I don't know why commit mails go to the general list, but this one
> caught my eye:
>
> On 2011-08-17, <sd...@apache.org> wrote:
>
> > Node fileNameNode =
> appenderChild.getAttributes().getNamedItem("name");
> > - if (fileNameNode != null &&
> fileNameNode.getNodeValue().equals("file")) {
> > + If (fileNameNode != null &&
> fileNameNode.getNodeValue().toLowerCase().equals("file")) {
>
> this is a locale sensitive comparison which is likely to cause problems
> in the famous Turkish/Azeri locale case ("I".toLowerCase() != "i"
> there).
>
> You may want to use fileNameNode.getNodeValue().equalsIgnoreCase("file")
> instead, which is safe.
>
> Stefan
>
Re: svn commit: r1158546 - in /logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw: LogFilePatternLayoutBuilder.java LogUI.java vfs/VFSLogFilePatternReceiver.java
Posted by Stefan Bodewig <bo...@apache.org>.
Hi Scott,
I don't know why commit mails go to the general list, but this one
caught my eye:
On 2011-08-17, <sd...@apache.org> wrote:
> Node fileNameNode = appenderChild.getAttributes().getNamedItem("name");
> - if (fileNameNode != null && fileNameNode.getNodeValue().equals("file")) {
> + If (fileNameNode != null && fileNameNode.getNodeValue().toLowerCase().equals("file")) {
this is a locale sensitive comparison which is likely to cause problems
in the famous Turkish/Azeri locale case ("I".toLowerCase() != "i"
there).
You may want to use fileNameNode.getNodeValue().equalsIgnoreCase("file")
instead, which is safe.
Stefan