We use a variety of formatting to highlight code or other technical language.
When to use code formatting
The following table provides some examples of when you should use backticks to highlight code or other strings:
For this... | Why use code? | Example |
---|---|---|
File paths and file names | Using code helps paths and file names stand out, and ensures clarity about the exact file name. | The agent looks for |
NRDB event names and attributes | Many attribute names (such as | To analyze APM errors, use the |
Method names | Using code formatting for method names is standard practice, and helps disambiguate the method name from surrounding text. Include | To initialize the APM agent, use |
URLs you don't intend to be clicked | Using code formatting hints to the user that they may need to customize or tweak the URL to ensure it works for them. | In your web browser, navigate to the minion Overview page at |
Command line utility names | If you think a reader or translator might confuse a command with a general English word, use code.
| To install the utility, use |
Inline code formatting
To format inline code (like maxSampleTimes
or TransactionError
), surround the text with backtick `
characters.
Multi-line code blocks
To format one or more lines of code, insert three backticks ( ```
) above and below your code. This essentially acts like the HTML <pre>
tag.
When you sandwich your code snippets between three backticks, you need to consider both the code indentation and the syntax highlighting.
Strict indentation
As a technial writer you'll be given code snippets from a variety of languages. To make it easier for your readers to understand code snippets, make sure that lines are indented and grouped in a helpful way.
Some programming and markup languages require specific indentation (for example, Python and YAML). Check with your subject matter expert if you are unsure about whether the snippet you've been given needs to have specific indentation in order to work. You can always run the snippet through an online code prettifier if it gets jumbled when you transfer it from another editing tool.
Here's an example of some Python code that will break if you change the indentation:
import newrelic.agentnewrelic.agent.initialize('newrelic.ini') #This is required!
def greet(name): """ This function says hello to the person who is passed in as a parameter """ print("Hello, " + name + " and the world!")
def execute_task(application, task_name): with newrelic.agent.BackgroundTask(application, name=task_name, group='Task'): greet("Robert")
application = newrelic.agent.register_application(timeout=10)execute_task(application, "bar")newrelic.agent.shutdown_agent(timeout=10)
Non-strict indentation
For free-form languages, which are casual about indentation, we recommend that you look for similar examples and follow those patterns. Java and SQL are examples of free-form languages.
How to format NRQL
NRQL is a free-form query language, which means that it doesn't have strict indentation rules. We recommend you follow some simple guidelines to make it easier to read. Our suggestions are loosely based on some SQL formatting guidelines.
You can use your discretion to decide if these guidlines apply to your snippet:
- Capitalize clause keywords such as
FROM
,SELECT
,FACET
,WHERE
,AND
,OR
,AS
,SINCE
,ORDER BY
,TIMESERIES
,EXTRAPOLATE
, andAUTO
. - Don't capitalize functions, such as
min()
,max()
,average()
,percentile()
,sum()
, andstddev()
, since query builder doesn't automatically capitalize these names. If you're not sure if a keyword is a function, see NRQL reference. - The first line should start with a
FROM
clause, even though queries run fine when you start withSELECT
. - Left-justify clause keywords except in the following cases:
- If a clause keyword is closely tied to a preceding keyword (for example,
AGO
is closely tied toSINCE
), it belongs on the same line. - If a clause keyword doesn't have any modifiers (it stands alone), you can tack it at the end of a line that already has keywords (for example,
TIMESERIES
,AUTO
, andEXTRAPOLATE
).FROM TransactionSELECT count(*)WHERE appName='interestingApplication'SINCE 60 minutes AGO EXTRAPOLATE
- If a clause keyword is closely tied to a preceding keyword (for example,
- For keywords inside of parentheses that span multiple lines, indent them two spaces. For example, the
WHERE
keyword is indented two spaces like this:FROM PageViewSELECT count(*)FACET CASES(WHERE duration < 1,WHERE duration > 1 and duration < 10,WHERE duration > 10)
Syntax highlighting
In addition to checking the indentation and grouping of code snippet lines, we recommend that you add language color coding to make it easier to read. You can add color coding for a variety of programming languages by adding the name of the language immediately following the first three backticks of your snippet. See the collapsers below for how to insert color coding and how to know if your language is supported.
Highlighting lines of code
To highlight entire lines of code in a code block, you can use lineHighlight=
to indicate the specific lines you want highlighted. You do this in the same place where you note the syntax. Here's an example of a code block with the first and third through fifth lines highlighted:
const coolThing = { key: 'HI', tada: 'hello'}// this is an important object// other notes...
Here's what the underlying code looks like for this:
Note that this requires the simultaneous use of syntax highlighting: you must indicate a language if you want to highlight lines.
Placeholders for customer-specific variables
Sometimes we want to use placeholders for variables whose value will depend on the customer or the situation. For example, you might need to use YOUR_ACCOUNT_ID
to indicate a placeholder where the customer is meant to input their New Relic account ID.
Some requirements and tips on crafting customer-specific value placeholders:
- Use all caps and underscores
_
to separate words (also known as SCREAMING_SNAKE_CASE). - Don't use other elements, like
<
or>
, or$
, unless SMEs make a compelling case for why other elements are needed for a specific language or situation. - Address the reader directly using
YOUR
. For example, useYOUR_ACCOUNT_ID
and notACCOUNT_ID
. - If you think it may be unclear if a component is something of ours or a third party's, you can add
NEW_RELIC
to the placeholder. For example, when writing about connecting AWS to New Relic, you may want to specific that an account is ours and not AWS's, like this:YOUR_NEW_RELIC_ACCOUNT_ID
. - Don't combine them with other punctuation to indicate variables (such as wrapping the text in angle brackets or curly braces).
When not to use placeholders
Placeholders are primarily used for when there is a procedure to be done, like a customer who will be running some code. If there's not a procedure involved and a code snippet is being used to demonstrate what something looks like or should look like, you should not use placeholders. Here are some examples of where you should not use placeholders:
- Example code or files: if you're showing an example config file or another example that isn't directly procedure-related, use example values and not placeholders.
- API call responses: if you're including the response of an API call that is meant to show what the response will look like and isn't procedure-related, don't use placeholders.
API Keys
If an API key needs to be referenced as an example in a code block or config, we will need to use placeholder text with asterisks instead of zeros.
Example:
...-e NEW_RELIC_API_KEY=********************************FFFFNRAL \...
or
...NEW_RELIC_LICENSE_KEY=****************************************...