Displaying the contents of a file to a grails page?












0















I'm building a feature into my Grails project where the users can click on a button on the main form and using secure FTP it will read the contents of a remote log file. What I want to do is to display the contents of that log file to a Grails page. I'm not sure how to go about this and internet searches have been fruitless.



Here's the method to read the log, I just quickly threw this together. Not sure how to go about takig the contents of the file I'm reading and dumping to the grails page. Any help appreciated.



P.S. I'm sure there's an easier way to do the method below in 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();
}









share|improve this question























  • this method is suitable for file download.

    – injecteer
    Nov 24 '18 at 17:54
















0















I'm building a feature into my Grails project where the users can click on a button on the main form and using secure FTP it will read the contents of a remote log file. What I want to do is to display the contents of that log file to a Grails page. I'm not sure how to go about this and internet searches have been fruitless.



Here's the method to read the log, I just quickly threw this together. Not sure how to go about takig the contents of the file I'm reading and dumping to the grails page. Any help appreciated.



P.S. I'm sure there's an easier way to do the method below in 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();
}









share|improve this question























  • this method is suitable for file download.

    – injecteer
    Nov 24 '18 at 17:54














0












0








0








I'm building a feature into my Grails project where the users can click on a button on the main form and using secure FTP it will read the contents of a remote log file. What I want to do is to display the contents of that log file to a Grails page. I'm not sure how to go about this and internet searches have been fruitless.



Here's the method to read the log, I just quickly threw this together. Not sure how to go about takig the contents of the file I'm reading and dumping to the grails page. Any help appreciated.



P.S. I'm sure there's an easier way to do the method below in 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();
}









share|improve this question














I'm building a feature into my Grails project where the users can click on a button on the main form and using secure FTP it will read the contents of a remote log file. What I want to do is to display the contents of that log file to a Grails page. I'm not sure how to go about this and internet searches have been fruitless.



Here's the method to read the log, I just quickly threw this together. Not sure how to go about takig the contents of the file I'm reading and dumping to the grails page. Any help appreciated.



P.S. I'm sure there's an easier way to do the method below in 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();
}






grails groovy






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Nov 20 '18 at 17:21









SultericSulteric

13618




13618













  • this method is suitable for file download.

    – injecteer
    Nov 24 '18 at 17:54



















  • this method is suitable for file download.

    – injecteer
    Nov 24 '18 at 17:54

















this method is suitable for file download.

– injecteer
Nov 24 '18 at 17:54





this method is suitable for file download.

– injecteer
Nov 24 '18 at 17:54












1 Answer
1






active

oldest

votes


















1














There are a few different ways to do this and some are safer than others. If your log files are too big you'll have issues displaying them. There are also encoding and security concerns you could think about.



The simplest and quickest way would just be to dump the string to the page inside of a controller call using the render method:



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


This probably wouldn't be my approach depending on whats inside the log files but, answers your question.






share|improve this answer























    Your Answer






    StackExchange.ifUsing("editor", function () {
    StackExchange.using("externalEditor", function () {
    StackExchange.using("snippets", function () {
    StackExchange.snippets.init();
    });
    });
    }, "code-snippets");

    StackExchange.ready(function() {
    var channelOptions = {
    tags: "".split(" "),
    id: "1"
    };
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function() {
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled) {
    StackExchange.using("snippets", function() {
    createEditor();
    });
    }
    else {
    createEditor();
    }
    });

    function createEditor() {
    StackExchange.prepareEditor({
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    imageUploader: {
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    },
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    });


    }
    });














    draft saved

    draft discarded


















    StackExchange.ready(
    function () {
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53398282%2fdisplaying-the-contents-of-a-file-to-a-grails-page%23new-answer', 'question_page');
    }
    );

    Post as a guest















    Required, but never shown

























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    1














    There are a few different ways to do this and some are safer than others. If your log files are too big you'll have issues displaying them. There are also encoding and security concerns you could think about.



    The simplest and quickest way would just be to dump the string to the page inside of a controller call using the render method:



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


    This probably wouldn't be my approach depending on whats inside the log files but, answers your question.






    share|improve this answer




























      1














      There are a few different ways to do this and some are safer than others. If your log files are too big you'll have issues displaying them. There are also encoding and security concerns you could think about.



      The simplest and quickest way would just be to dump the string to the page inside of a controller call using the render method:



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


      This probably wouldn't be my approach depending on whats inside the log files but, answers your question.






      share|improve this answer


























        1












        1








        1







        There are a few different ways to do this and some are safer than others. If your log files are too big you'll have issues displaying them. There are also encoding and security concerns you could think about.



        The simplest and quickest way would just be to dump the string to the page inside of a controller call using the render method:



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


        This probably wouldn't be my approach depending on whats inside the log files but, answers your question.






        share|improve this answer













        There are a few different ways to do this and some are safer than others. If your log files are too big you'll have issues displaying them. There are also encoding and security concerns you could think about.



        The simplest and quickest way would just be to dump the string to the page inside of a controller call using the render method:



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


        This probably wouldn't be my approach depending on whats inside the log files but, answers your question.







        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Nov 21 '18 at 10:58









        Michael J. LeeMichael J. Lee

        9,43131737




        9,43131737
































            draft saved

            draft discarded




















































            Thanks for contributing an answer to Stack Overflow!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid



            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.


            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53398282%2fdisplaying-the-contents-of-a-file-to-a-grails-page%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            Biblatex bibliography style without URLs when DOI exists (in Overleaf with Zotero bibliography)

            ComboBox Display Member on multiple fields

            Is it possible to collect Nectar points via Trainline?