Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 添加日志和sysout_Java_Logging - Fatal编程技术网

Java 添加日志和sysout

Java 添加日志和sysout,java,logging,Java,Logging,我被要求在类声明之前添加日志和sysout。我应该使用什么日志以及如何添加sysout?在这个程序中添加这些日志的意义是什么?我还被要求为员工Id和名字创建常量字段。这是否意味着我应该创建常量变量来存储员工Id和名字 public class Read { public static void main(String argv[]) { try { File fXmlFile = new File("/Users/mkyong/staff.xml"); Docu

我被要求在类声明之前添加日志和sysout。我应该使用什么日志以及如何添加sysout?在这个程序中添加这些日志的意义是什么?我还被要求为员工Id和名字创建常量字段。这是否意味着我应该创建常量变量来存储员工Id和名字

public class Read {

  public static void main(String argv[]) {

    try {

    File fXmlFile = new File("/Users/mkyong/staff.xml");
    DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
    DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
    Document doc = dBuilder.parse(fXmlFile);


    doc.getDocumentElement().normalize();

    System.out.println("Root element :" + doc.getDocumentElement().getNodeName());

    NodeList nList = doc.getElementsByTagName("staff");

    System.out.println("----------------------------");

    for (int temp = 0; temp < nList.getLength(); temp++) {

        Node nNode = nList.item(temp);

        System.out.println("\nCurrent Element :" + nNode.getNodeName());

        if (nNode.getNodeType() == Node.ELEMENT_NODE) {

            Element eElement = (Element) nNode;

            System.out.println("Staff id : " + eElement.getAttribute("id"));
            System.out.println("First Name : " + eElement.getElementsByTagName("firstname").item(0).getTextContent());
            System.out.println("Last Name : " + eElement.getElementsByTagName("lastname").item(0).getTextContent());
            System.out.println("Nick Name : " + eElement.getElementsByTagName("nickname").item(0).getTextContent());
            System.out.println("Salary : " + eElement.getElementsByTagName("salary").item(0).getTextContent());

        }
    }
    } catch (Exception e) {
    e.printStackTrace();
    }
  }

}
公共类读取{
公共静态void main(字符串argv[]){
试一试{
File fXmlFile=新文件(“/Users/mkyong/staff.xml”);
DocumentBuilderFactory dbFactory=DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder=dbFactory.newDocumentBuilder();
documentdoc=dBuilder.parse(fXmlFile);
doc.getDocumentElement().normalize();
System.out.println(“根元素:+doc.getDocumentElement().getNodeName());
NodeList nList=doc.getElementsByTagName(“staff”);
System.out.println(“-------------------------------”;
对于(int-temp=0;temp
“有人问过你”,当你的作业不清楚时,你应该先问助教

此外,“/Users/mkyong/staff.xml”在我看来非常可疑。因为他是一位非常著名的开发人员。你不应该在不理解的情况下,从互联网上获取示例并复制/粘贴它们

也就是说,您应该将静态final字段声明为常量,例如

private static final String STAFF_ID = "Staff id"
private static final String FIRST_NAME = "First Name"
然后在代码中替换这些值

至于日志和sysout,sysout只是意味着添加

System.out.println("something you would like to print")
日志也做同样的事情,但使用框架并自动提供更多信息,例如打印行的时间以及哪个类触发了打印,它还提供了打印消息的灵活性。 先看看这个

我假设Sysout的意思是
System.out.println
,如我所见,您已经添加了这些

通过
日志
我认为这意味着使用日志实现。使用
java.utils.logging.Logger
的示例如下:

import java.util.logging.Logger;

public class Main {

  private static Logger LOGGER = Logger.getLogger(Main.class.getSimpleName());

  public static void main(String[] args) {
    LOGGER.info("Logging an INFO-level message");
  }
}
如您所见,一些
记录器的目的是输出用于诊断(调试、监视)的文本。它可以将文本输出到控制台、文件和数据库,并以您想要的任何方式对其进行格式化

使用记录器vs plain
System.out.println
提供了更多的功率和控制

我还被要求为员工Id和名字创建常量字段

你有主意了。这意味着为
“firstname”
“staff”
“lastname”
和任何其他字符串创建常量。然后,在需要使用该字符串的地方,使用常量:

例:

这样做的好处是,您可以在单个位置查看所有常量,并在需要时轻松修改它们。想象一下在5个地方使用“firstname”
。然后你意识到你想用“名字”来代替。如果不使用常量,则必须在5个位置更改它,否则仅在1个位置更改它

private static final String STAFF = "staff";
private static final String FIRST_NAME = "firstname";