Есть ли log4net шаблон для machineName [дубликат]

По ссылке: Почему AnnotationReader был удален из эталонной реализации JAXB? , вам просто нужно использовать ниже зависимости maven:


    com.sun.xml.bind
    jaxb-impl
    2.2.11



    com.sun.xml.bind
    jaxb-core
    2.2.11

Вам нужно немного реорганизовать код. Также выглядит так, как будто вы не создали одинаковые поля имен в классе модели, это должно быть примерно так: Person.java

@XmlRootElement(name="Person")
@XmlAccessorType(XmlAccessType.FIELD)
public class Person {
    @XmlElement
    private String first;
    @XmlElement
    private String last;
    @XmlElement
    private String age;
    public String getFirst() {
        return first;
    }
    public void setFirst(String first) {
        this.first = first;
    }
    public String getLast() {
        return last;
    }
    public void setLast(String last) {
        this.last = last;
    }
    public String getAge() {
        return age;
    }
    public void setAge(String age) {
        this.age = age;
    }
    @Override
    public String toString() {
        return "Person [first=" + first + ", last=" + last + ", age=" + age + "]";
    }
} 

Book.java

@XmlRootElement(name="book")
@XmlAccessorType(XmlAccessType.FIELD)
public class Book {
    private List person = new ArrayList();

    public List getPerson() {
        return person;
    }

    public void setPerson(List person) {
        this.person = person;
    }
}

ReadXMLFileJaxb.java

public class ReadXMLFileJaxb {
    public static void main(String[] args) {
        File file = new File(ReadXMLFileDOM.class.getClassLoader().getResource("book.xml").getFile());

        try {
            JAXBContext context = JAXBContext.newInstance(Book.class);
            Unmarshaller unmarshaller = context.createUnmarshaller();
            Book book = (Book) unmarshaller.unmarshal(file);
            System.out.println(book.getPerson().size());

            for (int i = 0; i < book.getPerson().size(); i++) {
                System.out.println("------------");
                System.out.println(book.getPerson().get(i).getFirst());
                System.out.println(book.getPerson().get(i).getLast());
                System.out.println(book.getPerson().get(i).getAge());
            }

        } catch (JAXBException e) {
            System.out.println(e.getMessage());
        }
    }
}

Ниже приведен вывод:

3
------------
Kiran
Pai
22
------------
Bill
Gates
46
------------
Steve
Jobs
40

8
задан mtk 20 November 2012 в 18:51
поделиться

4 ответа

%property{log4net:HostName}
12
ответ дан 5 December 2019 в 05:34
поделиться

Я только что наткнулся на

<layout type="log4net.Layout.PatternLayout" value="${COMPUTERNAME}"/>

, и, похоже, это работает - интересно, в чем разница между этим и другими предложенными вариантами. например % property {log4net: HostName}

11
ответ дан 5 December 2019 в 05:34
поделиться

Ознакомьтесь с API PatternString , похоже, вам понадобится использовать свойство% в вашем шаблоне. Также ознакомьтесь с этой статьей , вам может потребоваться ввести имя компьютера в глобальный контекст при запуске приложения.

2
ответ дан 5 December 2019 в 05:34
поделиться

Интересно, я думаю, что это «Компактный синтаксис параметров», посмотрите последний раздел здесь http://logging.apache.org/log4net/release/manual/configuration. html

0
ответ дан 5 December 2019 в 05:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: