Displaying the contents of a file to a grails page?
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
add a comment |
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
this method is suitable for file download.
– injecteer
Nov 24 '18 at 17:54
add a comment |
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
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
grails groovy
asked Nov 20 '18 at 17:21
SultericSulteric
13618
13618
this method is suitable for file download.
– injecteer
Nov 24 '18 at 17:54
add a comment |
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
add a comment |
1 Answer
1
active
oldest
votes
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.
add a comment |
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
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
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.
add a comment |
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.
add a comment |
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.
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.
answered Nov 21 '18 at 10:58
Michael J. LeeMichael J. Lee
9,43131737
9,43131737
add a comment |
add a comment |
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.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
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
this method is suitable for file download.
– injecteer
Nov 24 '18 at 17:54