Java Log4j禁用#时间戳注释

Java Log4j禁用#时间戳注释,java,properties,properties-file,Java,Properties,Properties File,我有这样的log4j.properties文件: #Wed Jan 18 12:55:30 EET 2017 log4j.rootLogger=ERROR, stdout, gui, clientFile log4j.logger.app=DEBUG ... 当我启动应用程序时,带有时间戳的第一行(#Wed Jan 18 12:55:30 EET 2017)总是在变化。它会导致Git提交出现一些问题(我无法将此文件添加到.gitignore) 找到添加时间戳的内容:此方法正在applinked

我有这样的
log4j.properties
文件:

#Wed Jan 18 12:55:30 EET 2017
log4j.rootLogger=ERROR, stdout, gui, clientFile
log4j.logger.app=DEBUG
...
当我启动应用程序时,带有时间戳的第一行(
#Wed Jan 18 12:55:30 EET 2017
)总是在变化。它会导致Git提交出现一些问题(我无法将此文件添加到.gitignore)

找到添加时间戳的内容:此方法正在app
linkedProperties.store(fileOutputStream,null)中调用store()方法的实现来自java.util.Properties

    package java.util;
    ...
    public class Properties extends Hashtable<Object,Object> {
    ...

    public void store(OutputStream out, String comments)
        throws IOException
    {
        store0(new BufferedWriter(new OutputStreamWriter(out, "8859_1")),
               comments,
               true);
    }

    private void store0(BufferedWriter bw, String comments, boolean escUnicode)
            throws IOException
        {
            if (comments != null) {
                writeComments(bw, comments);
             }
            bw.write("#" + new Date().toString());
            bw.newLine();
            synchronized (this) {
                for (Enumeration<?> e = keys(); e.hasMoreElements();) {
                    String key = (String)e.nextElement();
                    String val = (String)get(key);
                    key = saveConvert(key, true, escUnicode);
                    /* No need to escape embedded and trailing spaces for value, hence
                     * pass false to flag.
                     */
                    val = saveConvert(val, false, escUnicode);
                    bw.write(key + "=" + val);
                    bw.newLine();
                }
            }
            bw.flush();
        }
    ...
包java.util;
...
公共类属性扩展了哈希表{
...
公共void存储(OutputStream out,字符串注释)
抛出IOException
{
store0(新的BufferedWriter(新的OutputStreamWriter(out,8859_1)),
评论,
正确的);
}
私有void存储0(BufferedWriter bw、字符串注释、布尔值)
抛出IOException
{
if(注释!=null){
书面建议(bw、评论);
}
写(“#”+新日期().toString());
换行符();
已同步(此){
对于(枚举e=keys();e.hasMoreElements();){
字符串键=(字符串)e.nextElement();
字符串val=(字符串)get(键);
key=saveConvert(key,true,Unicode);
/*无需为值转义嵌入和尾随空格,因此
*将false传递给flag。
*/
val=saveConvert(val,false,escnode);
写入(键+“=”+val);
换行符();
}
}
bw.flush();
}
...

我怎样才能避免这个
bw.write(“#”+newdate().toString())
?是否有类似于java.util.Properties的内容?

编辑:根据我的建议,考虑到OP的编辑,这个答案现在是非常多余的,我建议查找向文件添加时间戳的内容。不过,我将保留在这里,因为它可能会帮助某些人


首先,指示Git忽略文件中的单个行实际上是不可能的

我的第一个建议是找到向文件添加时间戳的内容并停止它

在Git中唯一能帮助您的方法就是从Gits工作树中删除该文件

git更新索引--跳过工作树

这将指示Git不应提交此文件的更改版本,因此不会将其包含在其工作树中,但仍会将跟踪副本保留在存储库中


显然,如果您要求开发人员定期更新/提交此文件,这将不起作用。

我刚刚覆盖了公共void存储(OutputStream out,String comments)(已删除
bw.write(“#”+new Date().toString())
)。有关此问题的更多信息,请使用此链接(它完全重复了我的问题):.

为什么不能将此文件添加到gitignore?因为您的配置在Eclipse IDE中。一个简单的解决方案是,下载一个新的Eclipse IDE,然后将源代码导入。@thebluefox我可以添加它,但文件可以由其他人更改。我需要在git上看到这些更改。因此.gtiignore不是解决此问题的最佳方法。谢谢,我的问题只是重复了这一点。当你问/搜索正确的问题时,你会发现惊人的结果