Отображение содержимого файла на странице Grails? - PullRequest
0 голосов
/ 20 ноября 2018

Я встраиваю функцию в свой проект Grails, где пользователи могут щелкнуть кнопку в главной форме и, используя безопасный FTP, он будет читать содержимое удаленного файла журнала.Я хочу отобразить содержимое этого файла журнала на странице Grails.Я не уверен, как это сделать, и поиск в интернете оказался бесплодным.

Вот метод чтения журнала, я просто быстро скинул это.Не знаю, как поступить с содержимым файла, который я читаю и выкидываю на страницу Grails.Любая помощь приветствуется.

PS Я уверен, что в Groovy есть способ проще, описанный ниже.

 def getLogFile() {

    JSch jsch = new JSch();
    Session session = null;

    try {

        String username = "joesmith"
        String password = "mypassword"
        String hostname = "123.456.78.910"
        String x
        // connect to the server through secure ftp
        session = jsch.getSession(username, hostname, 22);
        session.setConfig("StrictHostKeyChecking", "no");
        session.setPassword(password);
        session.connect();
        ChannelSftp channel = (ChannelSftp)session.openChannel("sftp");
        channel.connect();
        log.info("Session Connected, reading log file...");

        ChannelSftp sftpChannel = (ChannelSftp) channel;
        sftpChannel.cd("/usr/tmp")
        java.io.InputStream stream = sftpChannel.get("mylog.txt");

        BufferedReader br = new BufferedReader(new InputStreamReader(stream));

        while ((x = br.readLine()) != null) {
            log.info("line is " + x)
        }
    } catch (JSchException e) {
        e.printStackTrace();
    } catch (SftpException e) {
        e.printStackTrace();
    }

1 Ответ

0 голосов
/ 21 ноября 2018

Есть несколько разных способов сделать это, и некоторые безопаснее, чем другие.Если ваши файлы журнала слишком велики, у вас будут проблемы с их отображением.Есть также проблемы с кодированием и безопасностью, о которых вы могли бы подумать.

Самый простой и быстрый способ - просто выгрузить строку на страницу внутри вызова контроллера, используя метод render:

    def stringBuilder = new StringBuilder()
    while ((x = br.readLine()) != null) {
        stringBuilder.append(x)
    }
    render(text: stringBuilder.toString(), contentType: "text/plain", encoding: "UTF-8")

Это, вероятно, не мой подход, в зависимости от того, что находится внутри файлов журнала, но отвечает на ваш вопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...